2

在这里完成 knockout.js 新手。我在理解 knockout.js 的工作原理时遇到了一些麻烦。任何帮助表示赞赏。

我有一个 JSON 模型,我得到了 asp.net MVC,它看起来像这样 -

var model = [{
"Personal": {"Name" : "Something"},
"Address": [
          {"City" : "Some City"}
          {"City" : "Some Other City"}
          {"City" : "3rd City"}
"Relationships": [
          {"Affiliation" : "Aff1"},
          {"Affiliation" : "Aff2"},
]
]


var viewModel = ko.mapping.fromJS(model);
ko.applyBindings(viewModel);

然后,在我看来,我正在尝试这样做 -

<div data-bind="template: {foreach: Address}">
    <span data-bind="value: City"></span>
</div>

我收到“无法解析绑定,地址未定义”错误。我究竟做错了什么?

4

2 回答 2

2

你是什​​么意思,它“看起来像这样”?您编写的 javascript 模型对象不是有效的(缺少逗号、不匹配的括号..)。它看起来像是model一个数组(不是对象),将数组传递给ko.mapping.fromJS.

它适用于有效数据(并将跨度的绑定更改为text而不是value),请参阅小提琴:http: //jsfiddle.net/KXhem/16/

于 2012-08-05T02:33:25.757 回答
2

与 anitshok 之前所说的一样,这是一个可以正常工作的清理版本,但是,数据不是来自服务器。

<div data-bind="template: { name: 'address-template', foreach: Address }">
</div>
<script type="text/html" id="address-template">     
    <span data-bind="text: City"></span><br />
</script>

<script type="text/javascript">
    var model = {
       Personal: { "Name": "Something" },
       Address: [
         { "City": "Some City" },
         { "City": "Some Other City" },
         { "City": "3rd City"}],
      Relationships: [
         { "Affiliation": "Aff1" },
         { "Affiliation": "Aff2"}]
    };

    ko.applyBindings(model); 
</script>

您的代码似乎缺少的是对模板的调用、模板的包装器以及其中包含一些错误标记的模型。你应该可以从这里开始。

这是敲除映射敲除模板的链接。我使用的是 knockoutjs 2.1.0,所以您可能正在查看一个较旧的示例。

祝你好运,希望这对一些人有所帮助。

于 2012-08-05T02:36:43.827 回答