【问题标题】:AngularJS dynamic scope variablesAngularJS 动态范围变量
【发布时间】:2014-10-06 17:32:27
【问题描述】:

我有一个作用域变量jsonData 如下:

$scope.jsonData={id:'1234',abcd:{array:[{a:'data',b:'bdata',c:'cdata'},{a2:'a2data',b2:'b2data',c2:'c2data'}]},efg:{test:'testdata'}}

在我的 HTML 中,我有一个带有字符串的函数 calladd('jsonData.abcd.array')

在我的 js 文件中,我想在 abcd JSON 对象中添加一个 JSON 对象

$scope.add(data) {
    $scope[data].push({a3:'a3data',b3:'b3data',c3:'c3data'});
}

但我无法将数据推送到数组中。

【问题讨论】:

  • 这样的字符串不能超过 1 级 - 你需要解析它并执行实际的逻辑。
  • $scope 是一个对象,而不是一个数组。

标签: json angularjs angularjs-scope


【解决方案1】:

如果你想得到ID,你可以这样做

var id = $scope.jsonData.id;
//id = "1234"

您可以使用相同的逻辑来添加或获取值

【讨论】:

    【解决方案2】:

    致电myobject['prop1.prop2.whatever'] 是行不通的。

    您需要的是一个递归解析器,例如:

    $scope.add = function(data, scope){
        scope = (typeof scope === "undefined") ? $scope : scope;
        var datas = data.split('.');
        if(datas.length == 1){
            scope[datas[0]].push({
                a3: 'a3data',
                b3: 'b3data',
                c3: 'c3data'
            });
        }else{
            var first = datas.splice(0,1);
            $scope.add(datas.join('.'), scope[first]);
        }
    };
    

    And the fiddle

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2013-09-23
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多