我已经为此苦苦挣扎了一段时间,还没有找到解决方案,希望您能提供帮助。
在我用 Knockout 和 durandal 构建的 SPA 应用程序中,我严重依赖于 knockoutJS 的 With 构造。在我的和 durandals 架构的核心中深深嵌入的东西。
许多动作都带有关联的路由,以便将先前的动作存储在浏览器历史记录中。现在,一个动作也可能会操纵 DOM 或触发 CSS 转换(例如,在内部 div 上设置一个类来启动转换)。
不幸的是,每次重新评估 with 绑定时,都会重建该 with 语句下的整个 DOM,从而撤消我的 DOM 更改并终止转换。这正是我的场景中发生的情况,类似于以下伪:
<div data-bind="with: myViewModel">
... print current datetime ....
</div>
...
myViewModel(myViewModel());
有关此行为的更具体示例,请参阅此 jsfiddle:http: //jsfiddle.net/k32Xf/
这个问题只存在于 with 构造中,但是除了破解 durandal 代码本身之外,我还没有找到解决方法。这是淘汰赛中的错误吗?建议的解决方案/解决方法是什么?
谢谢!