我试图创建一个"复选框树"使用dojox mvc,取消选中最顶部的复选框将取消选中下面的复选框。 复选框的初始状态/值的数据绑定工作正常,但是当我通过代码将模型项visible属性更改为false(选中的复选框绑定到此属性)时,复选框仍保持选中状态。
我可以看到widget数据模型已将其值更改为false。
我的标记片段:
<script type="dojo/require">
at: "dojox/mvc/at"
</script>
<input type="checkbox" data-mvc-bindings="value: at('rel:', 'id'), id: at('rel:', 'id'), checked: at('rel:', 'visible').direction(at.both)" />
我还尝试通过Chrome开发者控制台将其数据值设置为false,但复选框仍保持选中状态
dijit.registry.byId("dojox_mvc_Templated_199").target
Object {id: "abc", name: "abc", legend: "iVBORw0KGgoAAAANSUhEUgAAABQA..truncated", visible: true, _watchCallbacks: function…}_watchCallbacks: function (a,b,d,r){var t=function(n){if(n){n=n.slice();for(var s=0,r=n.length;s<id: "abc"legend: "iVBORw0K4v5s/UwAAAAASUVORK5CYII="name: "abc"visible: false__proto__: Object
dijit.registry.byId("dojox_mvc_Templated_199").target.visible = false;
false
dijit.registry.byId("dojox_mvc_Templated_199").target
Object {id: "abc", name: "abc", legend: "iVBORw0KGgoAAAANSUhEUgAAABQA..truncated", visible: false, _watchCallbacks: function…}
任何人都知道如何实现这样的双向绑定? dojo文档很稀疏,特别是在这个主题上。
答案 0 :(得分:1)
很高兴看到你自己解决了这个问题。根据我在代码片段中看到的内容,我只是添加一件事以防万一:对于更改观察者(例如模板中的at()
)来通知更改,您需要使用dojo/Stateful#set()
API(例如stateful.set(“visible”, false)
)而不是直接设置属性(例如stageful.visible = false
)。
答案 1 :(得分:0)
解决。
我只需在commit()
queryStore()
和EditStoreRefListController
我的模特:
this.model = new EditStoreRefListController({
store: new MemoryStore({ idProperty: "id", data: new StatefulArray() })
});
所以在对模型进行更改后......
this.model.commit();
this.model.queryStore();