我有一个视图模型,我使用knockout mapper来映射它以创建可观察的属性。
var viewModel= {
"Name": "Josh",
"Position": "Developer",
"PersonalInfo": [{
"CashierMail": "Test@testin.com",
"Phone": "1234",
}]
}
var myViewModel = ko.mapping.fromJS(viewModel);
我有以下html:
<div>
The name is <span data-bind="text: Name"></span>
<div id="info">
Mail is <span data-bind="text: CashierMail"></span>
<br>
Position is <span data-bind="text: Position"></span>
<br>
Phone is <span data-bind="text: Phone"></span>
</div>
</div>
这是我的原始代码,只使用myViewModel中的一个绑定,它可以工作:
http://jsfiddle.net/KHFn8/837/
我想要完成的是div中带有id“info”的字段,用来填充Personal Info observable数组中的数据。换句话说,如果<div id="info">
是一个组件 - 要用自己的数据源填充。
所以我尝试这样的事情:
ko.applyBindings(myViewModel);
ko.applyBindings(myViewModel.PersonalInfo[0], document.getElementById("info"));
但它不起作用。
但我想按照上面的描述做事。以下是无效的代码:
http://jsfiddle.net/KHFn8/833/
我读到的这个主题与我的案例类似,但仍无法使其发挥作用:
Knockout.js ko.applyBindings() hierarchy binding
我是javascript和淘汰赛的新手,任何有关工作代码的帮助都将不胜感激。感谢您的时间和精力。
答案 0 :(得分:1)
当您尝试访问observableArray中的项目时,您需要访问基础数组,如:
myViewModel.PersonalInfo()[0]