使用表單爲用戶編輯基於$ rootScope(也可以是$ scope)的變量的詳細信息。AngularJS取消綁定等效變量
$rootScope.formData = $rootScope.user;
在視圖中,對輸入的NG-模型:
ng-model="formData.email"
我期望的行爲是更新模型,只有$ rootScope.formData將更新,而是兩者更新。
有沒有辦法打破兩者之間的關係?
使用表單爲用戶編輯基於$ rootScope(也可以是$ scope)的變量的詳細信息。AngularJS取消綁定等效變量
$rootScope.formData = $rootScope.user;
在視圖中,對輸入的NG-模型:
ng-model="formData.email"
我期望的行爲是更新模型,只有$ rootScope.formData將更新,而是兩者更新。
有沒有辦法打破兩者之間的關係?
正如評論中所述,我們正在使用JS引用。這意味着,我們正在過user
作爲參照其他(根)範圍
我們可以稱之爲angular.copy()
或cloneDeep()
(見lo-dash)有一個新的實例
至少我的整體技術是由他們的文檔驗證:) – Jazzy
問題是你已經設置了一個對象到另一個。對象通過Javascript中的引用傳遞,因此您基本上使$rootScope.formData
指向$rootScope.user
。這就是爲什麼更新一個更新另一個。
你可能$rootScope.user = null;
,這將基本上刪除的參考,但你已經失去了首先它的參考。如果這是不需要的,我想你可以將user
對象克隆到formData
,如果你沒有提供這個功能的庫,這本身就是一個壯舉。
人們期望這裏的工作是錯誤的。 'user'是一個參考。 JS中的對象作爲參考傳遞。而已。您始終可以調用clone或cloneDeep(例如lo-dash)。我建議重新考慮你的設計,基於JS行爲通過引用傳遞 –
你是對的,文檔給出了這個確切的場景作爲angular.copy()的例子。如果你做出這個答案,我會將其標記爲這樣。我所要做的只是在該方法中封裝第二個變量。謝謝。 http://docs.angularjs.org/api/angular.copy – Jazzy