Angularjs将数组保存在数组中

时间:2016-10-22 13:32:20

标签: javascript angularjs json

找到一个执行待办事项列表的代码。

  $scope.tasks = [];
  $scope.searchEnter = function() {
  if(event.which == 13 && $scope.task !="") {
    $scope.addTask();
  };

};
$scope.addTask = function() {
  $scope.tasks.push({'taskMessage':$scope.task, 'done':false});
  console.log($scope.tasks);
  $scope.task = "";
};
$scope.clearCompleted = function() {
  $scope.tasks = $scope.tasks.filter(function(item){
    return !item.done;
  });
};

考虑在从API调用收集数据的项目中使用它。

如何将使用API​​调用获取的数据实现到待办事项列表函数中?数据在$ rootScope.data中,假设应该可以在待办事项列表中存储data.id等属性。

尝试过这样的事情而没有任何结果。

<tr ng-repeat="x in data.list">
  <button ng-click="add()">Add!</button>
    <td>
      <input type="checkbox" ng-model="x.done" />
     {{ x.id }}
    </td>

API调用

    $scope.q ="";
$scope.searchData = function(url, id, callBack, apiCall, promise) {
  var url="http://api.openweathermap.org/data/2.5/find?q="+$scope.q+"&type=like";
  var id = APPKEY;
  var callBack = "&callback=JSON_CALLBACK";
  var apiCall = url + id + callBack;
  if($scope.q.length >= 3) {
    var promise = $http.jsonp(apiCall);
    promise.success(function(data){
      $rootScope.data = data;
      console.log($rootScope.data);
    });
  };

希望用户能够根据自己的喜好选择属性并存储它们。

1 个答案:

答案 0 :(得分:1)

在承诺成功功能上,您已将data分配给$rootScope.data

我所做的是遍历该数据并将每个数据块发送到addTask方法。

该方法将数据推送到您在视图中显示的tasks array

正如你所说,我假设你的回复包含了一系列对象。

更新:从promise返回的数据应该是这样的,

[
    {"id": 1, "name": "Test1"}
    {"id": 2, "name": "Test2"}
    {"id": 3, "name": "Test3"}
]


$scope.q ="";
$scope.searchData = function(url, id, callBack, apiCall, promise) {
  var url="http://api.openweathermap.org/data/2.5/find?q="+$scope.q+"&type=like";
  var id = APPKEY;
  var callBack = "&callback=JSON_CALLBACK";
  var apiCall = url + id + callBack;

  if($scope.q.length >= 3) {
    var promise = $http.jsonp(apiCall);

    promise.success(function(data){
      $rootScope.data = data;

      $scope.tasks = []

      $scope.addTask = function(data) {
        $scope.tasks.push(dara);
        console.log($scope.tasks);
      };


      for (var i = 0; i < $rootScope.data.length; i++)
            {
              $scope.addTask($rootScope.data[i])
            }

      $scope.addTask();
      console.log($rootScope.data);
      });
  };
};