我有一个迪朗达尔部件(热毛巾模板)在App>durandal>widgets>selector
部件的controller.js的代号为“选择”小工具:迪朗达尔小工具“this.settings未定义”
<span>
<a href="#" data-bind="click: $parent.enableSelect"> Click to enable </a>
<span data-bind="visible: settings.showTopLevel">
<select data-bind="options: settings.items, optionsText: 'name', optionsCaption: 'Select...', value: settings.selectedTopLevel"></select>
</span>
<br/>
<span data-bind="foreach: settings.items">
<a href="#" data-bind="click: $parent.showSelect">
<span data-bind="text: name"></span>
</a>
</span>
使用widget的:
<div>
<h2>Widget Selector:</h2>
<div data-bind="widget: { kind: 'selector', items: $root.projects }"></div>
但是我对功能selector.prototype.showSelect
符合var selected = this.settings.selectedTopLevel;
一些问题,主要错误是:
this.settings是不确定的
另一个问题出现在该行的html :
<a href="#" data-bind="click: $parent.enableSelect"> Click to enable </a>
Th当点击“点击启用”时,e函数selector.prototype.enableSelect
未被调用。
我是Durandal小部件中的新人,非常感谢您的任何帮助!
我部分解决了这个问题。我不使用原型函数,而是在主函数中使用嵌套函数,但在这行html' Click to enable'中,问题依然存在。 – kuskunko 2013-04-26 16:15:02
我觉得问题是这些都没有更新: this.settings.showTopLevel(true); this.settings.selectedTopLevel(null); 由于某些原因,在durandal小部件中声明的observables不会进入淘汰赛堆栈,也不会被绑定到视图(不知道哪一个)... 不确定为什么。为了获得淘汰赛的可观测数据,我不得不在父级视图模型的级别上在窗口小部件级别声明所需的任何可观察数据,并使用设置来传递它。 让我知道,如果你得到它的工作! – onzur 2013-04-28 11:15:03