Knockout JS映射插件混淆 [英] Knockout JS mapping plugin confusion

查看:23
本文介绍了Knockout JS映射插件混淆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

这是我的 json 文件:

<代码>{成员":[{"memberid": "001",会员名":杰森"},{"memberid": "002",会员名":鲍勃"}]}

这是 html 模板:

<h3 data-bind="text: memberid"></h3><p>姓名:<span data-bind="text: membername"></span></p>

剩下的:

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,使其可访问,并公开模型属性(将包含所有映射数据).您可以跳过模型属性,也可以在 vm 上执行此操作.您甚至可以将 applyBindings 移到此之外,因为您真的只希望它运行一次.

I'm confused as to when and where I should declare my viewModel when using the mapping plugin.

Here's my json file:

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

Here's the html template:

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

Here is the rest:

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

            }
        );

ko.mapping.fromJSON(data, viewModel);

Thanks in advance for your assistance!

解决方案

You likely want to declare your viewModel outside of the closure, so it is more accessible. For example:

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

This would create the viewModel, make it accessible, and expose the model property (which would contain all the mapped data). You could skip the model property and just do it on the vm, too. You could even move the applyBindings outside of this, since you really only want that to run once.

这篇关于Knockout JS映射插件混淆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆