使用durandaljs hottowel - 我想动态更改视图但激活不允许我这样做

时间:2013-04-21 00:55:36

标签: durandal hottowel

我正在使用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>

2 个答案:

答案 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