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

时间:2014-05-30 02:46:41

标签: knockout.js

我(对KO来说是新手)与Ryan Niemayer提供的视图构造函数一起玩How to properly structure a KnockoutJS application,我试图设置一个默认视图来加载显示...

  

例如在#3中,您可以使用类似......

的构造函数

这是我的fork试图设置默认值:

// (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!

1 个答案:

答案 0 :(得分:2)

实际上你错过了()

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

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