【问题标题】:How to add JSON data to an observableArray如何将 JSON 数据添加到 observableArray
【发布时间】:2013-08-15 08:04:04
【问题描述】:

在 html 页面中我有一个视图模型

 AppViewModel = {
        people : ko.observableArray([
        {
            fName : 'john'
            lName :'conor'
        }, {
            city  : 'dallas'
        }, {
            state : 'texas'
        } ]),


    };

我从服务器获取格式的 json 数据

{
                fName : 'john'
                lName :'conor'
            }, {
                city  : 'dallas'
            }, {
                state : 'texas'
            }

我希望将 json 数据添加到数组中(推送),例如 AppViewModel.people.push(ko.mapping.fromJS(jsondata, viewModel)) 但它不工作。 有什么想法吗?

【问题讨论】:

标签: knockout.js knockout-2.0 knockout-mapping-plugin


【解决方案1】:

如果 jsonData 是一个数组,这可行。

ko.utils.arrayForEach(jsondata, function(item){
    AppViewModel.people.push(item);
});

编辑

您可以使用jQuery.isEmptyObject检查对象是否为空。

if(jQuery.isEmptyObject(jsonData) == false)
    AppViewModel.people.push(jsonData)

或者你可以使用这个版本的 isEmpty :

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

希望对你有帮助。

【讨论】:

  • 谢谢,当jsondata不是数组且可能为空时如何设置属性值请帮忙
  • 如果不是数组,那是什么?
  • 有时 jsondata 类似于 {"lName":"john","fName":"conor"} 和 {}
  • 所以,如果 jsonData 为空,您不想更改 people 数组,但是当 jsonData 是具有属性的对象时,您希望将其添加到 people 数组中?
猜你喜欢
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2012-09-24
相关资源
最近更新 更多