如何将json数据推入角度js中的数组

时间:2016-02-12 12:40:10

标签: angularjs json

如何将$ scope.moduleSelected中的数据导入treedata_avm数组中的标签而不是数组中存在的硬编码值?

app.controller('treeController',['$http','$scope','dataService',function( $http,$scope,dataService){

    $http.get('WS/tree').success(function(data,status){
        $scope.modules=data;
        $scope.moduleSelected = $scope.modules[0].MODULE_NAME;
        $scope.moduleSelectedId = $scope.modules[0].ID;
        $scope.moduleSelectedParentId = $scope.modules[0].PARENT_ID;

     console.log($scope.modules);
     console.log($scope.moduleSelected);
     console.log($scope.moduleSelectedId);
     console.log($scope.moduleSelectedParentId);


    }).error(function(data){
        $scope.modules=data || "Request failed";
        console.log("Request failed "+ $scope.modules);
    });

    }]);

treedata_avm:

treedata_avm = [
  {
    label: 'Animal',
    children: [
      {
        label: 'Dog',

      }, {
        label: 'Cat',

      }, {
        label: 'Hippopotamus',

      }, {
        label: 'Chicken',
        children: ['White Leghorn', 'Rhode Island Red', 'Jersey Giant']
      }
    ]
  }]

2 个答案:

答案 0 :(得分:0)

带有$http promise resolve函数的

success以当前格式返回数据:response.data

在你的情况下,你应该首先设置

$http.get('WS/tree').success(function(response){
    $scope.modules = response.data;
    $scope.treedata_avm = response.data
}).error(function (){...})

如果您打算在视图上使用treedata_avm,那么它应该在$scope.treedata_avm中的$ scope上,如果没有,那么只需将它用作控制器内的变量

此外,我的建议是将所有这些$http逻辑放入提供程序(工厂,服务,提供程序),然后从那里调用它。 建议是使控制器尽可能薄,并将逻辑放在提供者(工厂,服务,提供者)中,从而使其成为可重用的

希望这有帮助。

答案 1 :(得分:0)

你可以听取事件' onchange'在该字段上,绑定到$ scope.moduleSelected并在输入字段更改时更改您的json。但我不明白,为什么你需要这样的东西?