对于一个简单的 test.html,敲除组件在我的简单 test.html 中工作正常,我的意思是它成功执行视图模型并附加模板,但在巨大的 index.html 中不起作用。有人有想法吗?
文件 test.html:
<html>
<body>
<div id="mandiv" class data-bind="component: 'user' "> </div>
<script type='text/javascript' src='./js/knockout-3.4.0.js'></script>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
文件 app.js:
var userModel = function() {
console.log("I inside model");
firstname = ko.observable("aaa");
lastname = ko.observable("bb");
console.log("firstname: " + firstname());
console.log("test");
this.fullname = ko.pureComputed(function(){
return firstname() + " " + lastname();
});
};
console.log("I out here");
ko.components.register('user', {
viewModel: userModel,
template : '<p> <input type="text" placeholder="first name" data-bind="value:firstname"> </p> ' + ' <p> <input type="text" placeholder="last name" data-bind="value:lastname"> </p>' + '<p> full name : <span data-bind="text: fullname"> </span> </p> </div>'
});
ko.applyBindings();
它在 test.html 上运行良好。
在更大的 index.html 中,我做了同样的事情。但它不起作用。它没有执行 viewModel 并且无法附加模板。由于我的 index.html 太长,我只是复制了相关代码。
index.html 相关代码:
<div id="mandiv" class="hidden" data-bind="component: 'user' ">
</div>
此 div 之前和此 div 之后是单独的 div。并在任何 js 文件之前包含 knockout.js 和 app.js。这没用。有任何想法吗?赞赏!