2016-03-03 60 views
1

我是AngularJS的新手,我想用一個json文件構建一個object數據。angularjs foreach loop問題

這是我json文件:

[ 
    {"id": 1, "name": "user1", "select": false }, 
    {"id": 2, "name": "user2", "select": false }, 
    {"id": 3, "name": "user3", "select": false }, 
    {"id": 4, "name": "user4", "select": false }, 
    {"id": 5, "name": "user5", "select": false } 
] 

現在我想用foreach循環來檢查該用戶已經選擇==真,推動這個用戶名新array。所以這是我第一次嘗試:

'use strict'; 

angular.module('apiOmat', []) 


    .controller('UsersCtrl', function($scope, $http){ 
    $http.get('users.json').then(function(usersResponse) { 
     $scope.users = usersResponse.data; 
    }); 


$scope.submit = function(message,title){ 

var tempArr = []; 
angular.forEach($scope.users.name, function(value,key){ 
tempArr.push(value); 
}); 

console.log(tempArr); 

    $scope.messagebody = '{ "title" = "' + title + '", "message" = "' + message + '"}'; 
} 

}); 

我也試過這樣:

$scope.submit = function(message,title){ 

    var tempArr = []; 
    angular.forEach($scope.users, function(value,key){ 
    tempArr.push({ key : value }); 
    }); 

    console.log(tempArr); 

控制檯日誌5的對象,但沒有任何價值。只是 1:對象 2:對象 3:對象 ...

我知道查詢是真的還是假的缺失。但是我想在添加查詢之前修復此步驟。

+1

試試這個'angular.forEach($ scope.users,功能(用戶){tempArr.push(用戶)})'。 –

+0

謝謝謝謝謝謝!它幾乎工作。我只是用tempArr.push(用戶名)來獲取我的用戶名。 – Paili

+0

這不是每個迴路問題的角度 – Prasad

回答

3

對於這一點:

現在我想用一個foreach -loop檢查該用戶已經 選擇==真,推動這個用戶名我的新陣列

$scope.submit = function(message,title){ 
    var tempArr = []; 
    angular.forEach($scope.users, function(item){ 
    if(item.select == true){ 
     tempArr.push(item); 
    } 
    }); 

另一個簡單&更好解決方案是使用filter代替。

$scope.submit = function(message,title){ 
    var tempArr = ($scope.users).filter(function(d){ 
     return (d.select == true); 
    }); 
}); 

console.log(tempArr) 
+0

非常感謝你:) – Paili

+0

嘗試第二個它更好:) –

1

試試下面

$scope.submit = function(message,title){ 

var tempArr = []; 
angular.forEach($scope.users, function(i,j){ 

if(i.select == true) 
{ 
tempArr.push(i.name); 
    } 
}); 

console.log(tempArr); 
+0

此解決方案不檢查選擇==真,我想這是你在數組上迭代的主要目的。 –

1

試試這個

$scope.submit = function(message,title){ 
    var tempArr = []; 
    angular.forEach($scope.users, function(user){ 
    tempArr.push({"name":user.name}); 
    }); 
1

試試這個

var tempArr = []; 
angular.forEach($scope.users, function(user){ 
    user.select && tempArr.push(user.name); 
}); 

console.dir(tempArr); 
+0

不適用於我:( 有一個空的陣列 – Paili

+1

也許是因爲所有的用戶都有「選擇」= false?它工作正常.http://jsfiddle.net/qp9qapgm/ –

+0

我沒有複製所有東西我的錯,對不起:D – Paili

0

保持簡單:

$scope.submit = function(message, title){ 
    var tempArr = []; 
    angular.forEach($scope.users, function(user){ 
    if(user.select == true) //filter select:true only 
     tempArr.push({"name_as_key":user.name}); //name_as_key can be replaced if intended to 
    });