我正在使用Durandal,hottowel。想要动态更改视图,根据cookie值隐藏一些div。但是,如果我在“激活”中编写代码
$("#box1").hide();
$("#box2").show();
两个框都显示,隐藏不起作用。但是,如果我将相同的代码连接到点击事件,那么一切正常。 “激活”是不是做这种事情的合适地方?做这种事的最好方法是什么。
My view is simply as follows:
<section>
<div id="box1">
box1
</div>
<div id="box2">
box2
</div>
</section>
答案 0 :(得分:4)
更好的方法是使用durandal附带的knockout绑定在视图中以声明方式执行此操作。
<section>
<div data-bind="visible: box1Visible">
box1
</div>
<div data-bind="visible: box2Visible">
box2
</div>
</section>
VM:
return {
activate: activate,
box1Visible: ko.observable(false),
box2Visible: ko.observable(true)
}
然后,要显示或隐藏框,您需要做的就是从视图模型中设置这些可观察对象的值。然后,视图模型不需要知道视图中元素的结构或名称。
答案 1 :(得分:1)
我想我在模型中使用ViewAttached得到了答案。绑定视图后调用此方法。在此处详细了解http://durandaljs.com/documentation/Composition/ 和here