2

我对使用映射插件时应该在何时何地声明我的 viewModel 感到困惑。

这是我的 json 文件:

{
    "members": [
        {
            "memberid": "001",
            "membername": "Jason"
        },
       {
            "memberid": "002",
            "membername": "Bob"
        }
    ]
}

这是html模板:

<div data-bind="foreach: members">
<h3 data-bind="text: memberid"></h3>
<p>Name: <span data-bind="text: membername"></span></p>  
</div>

这是其余的:

var data = $.getJSON("members.json",function(data)  
            {
                var viewModel = ko.mapping.fromJSON(data);
                 ko.applyBindings(viewModel);

            }
        );

ko.mapping.fromJSON(data, viewModel);

提前感谢你的帮助!

4

1 回答 1

6

您可能希望在闭包之外声明您的 viewModel,因此它更易于访问。例如:

var viewModel = {};
var data = $.getJSON("members.json",function(data)  
            {
                viewModel.model = ko.mapping.fromJSON(data);
                 ko.applyBindings(viewModel);
            }
        );

这将创建 viewModel,使其可访问,并公开模型属性(将包含所有映射数据)。您也可以跳过模型属性并在 vm 上执行此操作。您甚至可以将 applyBindings 移到此之外,因为您真的只希望它运行一次。

于 2012-01-11T19:04:06.527 回答