knockout.js - Knockout JS映射插件混淆

标签 knockout.js knockout-mapping-plugin

在使用映射插件时,我不知道应该在何时何地声明我的 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);

在此先感谢您的协助!

最佳答案

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

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

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

关于knockout.js - Knockout JS映射插件混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822943/

相关文章:

javascript - 如何通过KNOCKOUT中的数据绑定(bind)值更改css中规则的值?

javascript - Knockout.js 中带有 2 个复选框的互补状态

javascript - 使用 Knockoutjs 在客户端添加和删除项目

knockout.js - 在包含空字符串的数组上使用 fromJS 会将这些字符串替换为 false

jquery - 大型 MVC Web 应用程序 - 使用 Knockout 和 Razor

knockout.js - 是否可以在计算中使用扩展器?

javascript - 使用 Knockout.JS 将 HTML 复选标记通过 JSON 传递到表中

javascript - KnockoutJS - Base64 动画 gif 重启动画

javascript - 遍历对象属性

javascript - knockout 映射和绑定(bind)