0

我正在使用 Durandal,热毛巾。想要动态更改视图,根据 cookie 值隐藏一些 div。但是,如果我这样在“激活”中编写代码

  $("#box1").hide();
  $("#box2").show();

两个框都显示了,隐藏不起作用。但是,如果我将相同的代码连接到单击事件,那么一切正常。难道“激活”不适合做这样的事情吗?做这种事情的最好方法是什么。

My view is simply as follows:
<section>
     <div id="box1">
            box1
    </div>
        <div id="box2">
               box2
        </div>
</section>
4

2 回答 2

4

更好的方法是使用 durandal 附带的淘汰赛绑定在视图中以声明方式执行此操作。

<section>
    <div data-bind="visible: box1Visible">
        box1
    </div>
    <div data-bind="visible: box2Visible">
        box2
    </div>
</section>

虚拟机:

return {
    activate: activate,
    box1Visible: ko.observable(false),
    box2Visible: ko.observable(true)
}

然后,显示或隐藏这些框所需要做的就是从视图模型中设置这些可观察对象的值。然后视图模型不需要知道视图中元素的结构或名称。

于 2013-04-22T08:48:56.503 回答
1

I think I got the answer by using ViewAttached in my model. This method is called after view is bound. read more about it here http://durandaljs.com/documentation/Composition/ and here

于 2013-04-21T14:50:01.020 回答