KO.js如何在使用视图构造函数时设置默认视图

我是(新来的KO!)玩Ryan Niemayer在这里提供的视图构造函数:如何正确构造KnockoutJS应用程序,并且我试图设置一个默认视图以显示加载...

例如#3,你可以使用一个构造函数,如...

这里是我的叉尝试设置默认值:

// (templates are defined in the fiddle)
var View = function(title, templateName, data) {
   this.title = title;
   this.templateName = templateName;
   this.data = data; 
};

var definedViews = ko.observableArray([
    new View("one", "oneTmpl", new SubModelA()),
    new View("two", "twoTmpl", new SubModelB())
]);

var viewModel = {
    views: definedViews,
    defaultView: 0,
    selectedView: ko.observable( definedViews[0] )
};

ko.applyBindings(viewModel);

index.html的:

    <!-- ko with: selectedView -->
    <div data-bind="template: { name: templateName, data: data }"></div>
    <!-- /ko -->

http://jsfiddle.net/memeLab/WVVyM/2/

在加载时, selectedView是未定义的,但是当我点击选择时,它包含一个对象,如预期的那样...

我也尝试将viewModel重构为一个函数,尝试将参数提供给html声明,以及一些随机猜测不足以在此进行总结...

有什么建议么? TIA!


其实你错过了()

var viewModel = {
    views: definedViews,
    defaultView: 0,
    selectedView: ko.observable( definedViews()[0] )
};

这里工作的小提琴:http://jsfiddle.net/ZAHC9/

链接地址: http://www.djcxy.com/p/66057.html

上一篇: KO.js howto set default view when using view constructor

下一篇: Difference between knockout View Models declared as object literals vs functions