2016-03-09 35 views
0

我有一個默認的對象,其中列出了所有參數。現在我讓用戶有權列出一些參數並使其正常工作,其他人將按照我提到的那樣默認。 問題是我沒有得到它在使用angular的深拷貝解決方案,即angular.merge() 指令的工作您可以看到代碼here。 問題在於這些問題。值不更新使用angular.merge()

console.log(scope.options); 
scope.options = angular.merge(defaultOptions,scope.options); 
console.log(scope.options); 

現在,如果您在控制檯中看到兩個scope.options是不同的,它應該不是這樣。 我該如何解決這個問題?我究竟做錯了什麼?

回答

1
使副本

您可能沒有注意到,但是您正在將數組($scope.options)與對象文字(defaultOptions)合併。嘗試更改$scope.options到一個對象,你會得到所需的行爲,至少你要求什麼。

小提琴updated

+0

現在我覺得真的很愚蠢......但是,謝謝你的發現...... –

+0

不要:-)一直髮生。很高興我能幫上忙 – chris

0

爲什麼他們應該有所不同?你是合併他們。

您正在合併defaultOptions in scope.options

在您的例子我假設你想defaultOptions === scope.options,所以如果你想使用合併需要

delete scope.options; 

這裏是Fiddle

+0

@chris答案其實是正確的。請參見。 –