【问题标题】:AngularJS - Create dynamic properties to an object/model from jsonAngularJS - 从 json 创建对象/模型的动态属性
【发布时间】:2015-04-27 20:55:50
【问题描述】:

好的,我们都知道这是可行的:

vm.myObject = { 
             required : "This field requires data",
             .....
           }

但是当属性'keys'和'values'来自json文件时,我如何动态创建相同的对象,例如:

json:

     [
       { "key" :"required", "value": "This field requires data"},
         .....
     ]

服务:

  var myObject = {}
  DynamicObjSvc.get()
        .success(function(data){
            data.forEach(function(item){
               // pass each key as an object property
               // and pass its respective value
                ?????????
            })
        .....

更新:

Kavemen 基本上是正确的,结果证明这是解决方案:

    var myObject = {};
    DynamicObjSvc.all()
        .success(function(data){
           angular.forEach(data, function(msg) {
               myObject[msg.key] = msg.value; <-- his answer was incorrect here
            });
            $fgConfigProviderRef.validation.message(myObject);
        })
        .error(function(err){
            console.log(err.message);
        })

【问题讨论】:

    标签: json angularjs object


    【解决方案1】:

    您可以使用angular.forEach 和括号表示法在 Javascript 中设置(和获取)对象属性

    var myObject = {}
    DynamicObjSvc.get().success(
        function(data) {
            angular.forEach(data, function(value, key) { 
                myObject[key] = value;
            });
        }
    );
    

    另请参阅来自 MDN 的 Working with Objects

    编辑

    我现在看到您的 data 确实是一个对象数组,而不仅仅是一个对象,所以是的,上面的代码可能会让您误入歧途。

    无论如何,使用括号表示法动态设置对象属性的方法是合理的;可以重新设计循环以处理您的 data 数组:

    //we have an array of objects now
    var myObjects = [];
    DynamicObjSvc.get().success(
        function(data) {
            //for each object in the data array
            for(var i = 0; i < data.length; i++) {
                //create and populate a new object for the ith data element
                var newObject = {};
                angular.forEach(data[i], function(value, key) { 
                    newObject[key] = value;
                });
                //and add it to the overall collection
                myObjects.push(newObject);
            }
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2015-09-20
      • 2010-10-26
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多