2012-10-08 73 views
9

我遇到了綁定視圖內輸入的問題。我認爲它會綁定到控制器範圍,但它似乎綁定到一個子範圍,所以它不會在上面進行更新。AngularJS:輸入不綁定到視圖中的預期範圍

其他項目會像我期望的那樣綁定,如果它們在ng-repeat內部(我不知道爲什麼)。

下面是一個例子:
http://jsfiddle.net/hMpsB/1/

什麼是輸入綁定到正確的範圍,如果它不是一個NG重複內的最佳方法是什麼?

回答

16

在你的榜樣,你將有更好的運氣結合的$scope.test一個對象,而不是原始的類型是這樣的:

$scope.test = { val: "test value" }; 

你可以看到this fiddle的工作示例。

ngView中創建的子範圍將複製您的值,並且由於您的原始$scope.test是原始字符串,因此它沒有鏈接到父值,因此您的輸入將修改子範圍副本。綁定到對象時,您的子作用域具有對象引用的副本,但最終會修改對象的同一實例。

有關創建服務以跨多個控制器保持數據(與您的問題有點類似)的更多信息,請參見this question

您也可以使用$parent,如this answer中所述,儘管Mark提到它沒有文檔,並且如果另一個子範圍被引入到某處,可能會變得混亂。

相關問題