2014-12-22 21 views
1

我已經創建了一個形式動態地添加多個用戶信息在angularJS納克重複使用時。它工作正常。但在我的腦海裏左右的ng-repeat.array工作array of object如果我使用$scope.users = [];$scope.users=[{}]ng-repeat作品不同的問題。使用$scope.users = [], view appears blank, $ scope.users = [{}],視圖顯示正確。 我已經爲兩者創建了小提琴鏈接。任何人都可以解釋我在這裏發生了什麼。工作差[{}]與

鏈接與$ scope.users = []是:http://jsfiddle.net/9Ymvt/2799/鏈接與$cope.users = [{ }]
是:http://jsfiddle.net/9Ymvt/2800/

更新:如果我使用$scope.users = [[]],它工作正常,但數據不具有約束力第一次,因爲它在$scope.users = [{}]中有約束力。當我點擊OB addMore users button
數據僅結合下面是小提琴鏈接:http://jsfiddle.net/9Ymvt/2801/

我在想什麼,如果數據與[{}]結合,爲什麼不[[]];

回答

2

$cope.users = [{ }]在其空白{}中有一個對象,所以ng-repeat將遍歷數組中的對象。沒有關係,對象是空的或沒有。這裏你的ng-repeat運行一次。

$scope.users = [ ]users array沒有什麼裏面,沒有什麼可重複,所以ng-repeat不會重複。

+0

感謝您的回答。我的困惑現在已被清除。 – Ved

+0

很高興幫助你:) –

+0

我剛剛更新了我的問題。請檢查它。謝謝.. – Ved

1

[{}]與空對象的陣列因此它的長度是1並且在[]是長度爲0空數組這樣的循環將不會超過它運行遍歷它會發生。因此,當您使用[{}]運行時,表單會填充,因爲角度可以遍歷數組。

更新:不是Vs的的[]事項{}。 {}等於新的Object(),[]等於新的Array()。 外陣列,用戶您正在循環上,嘗試將循環的當前元素是人你的情況(從下面片斷)

ng-repeat="person in users" 

到PERSON.NAME結合。但是,.name只能附加到一個對象而不是數組,所以當你使用[[]]時,綁定會失敗,因爲angular會嘗試將.name附加到數組裏面。

+0

我剛剛更新了我的問題。請檢查它。謝謝.. – Ved

+0

@Ved更新了答案。 欲瞭解更多信息:http://jsfiddle.net/9Ymvt/2801/embedded/result/ – TheRodeo

+0

泰納克你.. UPVOTED你的答案。 – Ved

0

首先一個$scope.users = []是空數組,並且所述第二$scope.users = [{ }]只是與一個對象的陣列。 當你執行ng-repeat時,它遍歷數組中的所有對象,並且在第一種情況下數組是空的,這就是view爲空的原因。

這樣的:

$scope.users = [{ }] 

等於這個:

$scope.users = []; 
$scope.users.push({ }); 

它與內部項數組只是聲明。

+0

我剛剛更新了我的問題。請檢查它。謝謝.. – Ved

0

它相當簡單:),

$ scope.users = []是一個空數組 雖然 $ scope.users = [{}]是與空對象的陣列。