【发布时间】:2016-03-04 08:32:05
【问题描述】:
在Durandal中,我正在寻找一种通过分配viewOptions: ko.observable("small") 来快速初始化活动切换按钮的方法。在viewOptions发生变化的同时,我想打开对应id的按钮并关闭所有其他按钮。
在我尝试过的几种方法中,没有一个能做到这一点。以下代码中缺少什么?
- 框架是 Durandal,是 Knockout JS 的扩展
- 我对观察到的变量的变化没有任何反应
HTML:
<div class="btn-group right" id="view-selector" data-toggle="buttons" data-bind="radio: viewOptions">
<button type="button" id="small" class="btn btn-default" data-bind="css: {active: viewOptions() == 'small'}"><span class="glyphicon glyphicon-stop">Small</button>
<button type="button" id="medium" class="btn btn-default" data-bind="css: {active: viewOptions() == 'medium'}"><span class="glyphicon glyphicon-th-large">Medium</button>
<button type="button" id="large" class="btn btn-default" data-bind="css: {active: viewOptions() == 'large'}"><span class="glyphicon glyphicon-th">Large</button>
</div>
JS:
define(['jquery', 'jquery-ui', 'bootstrap', 'knockout', 'durandal/app', 'plugins/router'], function($, jqueryui, bootstrap, ko, app, router) {
return {
viewOptions: ko.observable("small"),
bindingComplete: function() { // called immediately after databinding occurs.
alert("start"); //called
console.log("validate: this:", this); // Object {__moduleId__: "app/view"}
console.log("validate: viewOptions:",this.viewOptions); // OK, non-empty
this.viewOptions.subscribe(function(newViewOptions){
alert("Hello there!"); //never gets called
alert(newViewOptions); //
});
alert("end"); //called
}
}
});
【问题讨论】:
标签: jquery knockout.js toggle durandal observable