Knockout.js ko.applyBindings()将viewmodel的一部分绑定到一个单独的div

时间:2012-08-07 09:12:12

标签: knockout.js

我有一个视图模型,我使用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和淘汰赛的新手,任何有关工作代码的帮助都将不胜感激。感谢您的时间和精力。

1 个答案:

答案 0 :(得分:1)

当您尝试访问observableArray中的项目时,您需要访问基础数组,如:

myViewModel.PersonalInfo()[0]

http://jsfiddle.net/rniemeyer/KHFn8/844/