2
我想從我的遺留代碼獲得服務,並運行到一個奇怪的錯誤與
injector()
返回undefined:注射器返回未定義的值?
- 此外,我試圖將新的屬性值返回到服務,這將反映到範圍而不使用手錶?
非常感謝你,任何指針或建議,非常感謝。
我想從我的遺留代碼獲得服務,並運行到一個奇怪的錯誤與injector()
返回undefined:注射器返回未定義的值?
非常感謝你,任何指針或建議,非常感謝。
您正在嘗試在構建DOM之前獲取該元素。這與在$(document).ready()
之外運行JavaScript基本相同。所以這條線沒有元素獲得:
var elem = angular.element($('#myCtr'));
另外,順便說一下,而不是使用jQuery,對於上面做另一個角度的選擇是:
var elem = angular.element(document.querySelector('#myCtr'))
角度提供了一個相當於$(document).ready()
叫angular.element(document).ready()
我們可以使用。
但是,您還需要抓取scope
並在scope.$apply()
內執行更改,以便Angular知道您已更改了應該注意的內容。
結合使用這兩種我們得到:
angular.element(document).ready(function() {
var elem = angular.element($('#myCtr'));
//get the injector.
var injector = elem.injector();
scope= elem.scope();
scope.$apply(function() {
injector.get('cartFactory').cart.quantity = 1;
});
});
喜KayakDave,非常感謝你的幫助。在這種情況下,我試圖說明我的情況,我試圖操作角碼(從遺留代碼部分)以外的服務數據,這就是爲什麼我試圖使用該元素來抓取注入器的原因。所以我想你是對的,dom還沒有被構建,也許我可以通過將代碼放入控制器外部的超時模塊來進行模擬。 – mr1031011
有沒有可能有角度調用你的遺留代碼,並讓它知道Angular已完成自舉? – KayakDave
當然,如果angular在引導完成時有一個回調函數,我肯定可以把這段代碼放到我的代碼中。 – mr1031011