我是使用淘汰赛的新手,我创建了一个最初在我视图中的视图模型,当我进入文本框时工作和更新了文本,但是在我将视图中的淘汰视图模型移动到单独的javasctipt文件之后将它包含在脚本标记中引用它的视图中,不应用knockout绑定。我还需要做什么?我如何让它工作?我不想在引用淘汰赛的每个视图中都有脚本标签,并且在视图中定义了视图模型,我希望视图模型位于不同的文件中。
这是我的视图模型,当我将其包含在视图中的脚本标记中时,它可以正常工作。我已将其移至名为UserDashboardViewModel.js
的单独文件中,并将其包含在我的视图中,但在单独的文件中仅在包含在视图中时才会起作用:
var viewModel = {
monkey: ko.observable(),
array: ko.observableArray(),
AddAnimal: function ()
{
this.array.push(this.monkey());
}
};
ko.applyBindings(viewModel);
在我看来:
<script type='text/javascript' src='~/Scripts/knockout-3.4.0.js'></script>
<script type='text/javascript' src='~/Scripts/UserDashboardViewModel.js></script>
<h1 data-bind="text: monkey">text</h1>
... other knockout data-bindings that do not work
答案 0 :(得分:2)
如果您的脚本标记位于head
页面的HTML
,那么您需要确保在加载DOM时调用ko.applyBindings()
。
// with jQuery
$(document).ready(function(){ko.applyBindings(viewModel); });
// shorter jQuery version
$(function(){ ko.applyBindings(viewModel); });
// without jQuery (doesn't work in older IEs)
document.addEventListener('DOMContentLoaded', function(){
ko.applyBindings(viewModel);
}, false);