在angularjs控制器白化另一功能訪問函數我定義其功能的控制器:如何從使用「這個」關鍵字
myApp.controller "SomeCtrl", ($scope) ->
@go = (text) ->
console.log(text)
@go2 =() ->
??go('test')
「??」是我正在努力的。
如果我將這些函數賦值給$ scope,那麼可以使用$ scope.go()。 如何在這種情況下達到相同的效果?
在angularjs控制器白化另一功能訪問函數我定義其功能的控制器:如何從使用「這個」關鍵字
myApp.controller "SomeCtrl", ($scope) ->
@go = (text) ->
console.log(text)
@go2 =() ->
??go('test')
「??」是我正在努力的。
如果我將這些函數賦值給$ scope,那麼可以使用$ scope.go()。 如何在這種情況下達到相同的效果?
不知道爲什麼它不爲你工作。如果我使用簡單的Javascript,它的作品。這裏有一個小提琴:http://jsfiddle.net/dafoo/K7aPq/2/
function MyCtrl($scope) {
function foo1 (argument) {
console.log('foo1');
console.log(argument);
};
function foo2() {
console.log('foo2');
foo1('test');
};
foo2();
}
謝謝Foo,但由於某種原因它不適合我。 我在原始問題中添加了小提琴 –
下面是一個工作小提琴:http://jsfiddle.net/dafoo/K7aPq/16/您在'foo1('超級英雄')的電話前錯過了'this'。 '。 –
Foo L你是對的,我錯過了。我錯過了一個'這個'。 –
在AngularJS具體會出現此問題,在控制器和指令。不知道爲什麼他們選擇劫持this
,當有各種依賴注入選項......過度殺傷。
尼克,你能提供更多細節嗎? –
@nbaleli不是真的,但如果你谷歌「角度這個關鍵字」,你會在結果的第一頁和第二頁看到,各種各樣的人提到在角度框架中控制器和指令範圍內重複使用this。不幸,但真實。附:你總是可以設置一個局部變量到'$ scope',這樣你就不必每次都寫出'$ scope.whatever'。 :/ –
@nbaleli我的觀點是,爲了在框架的範圍內編寫正確的代碼,您不應該以這種方式使用'this'。 –
它在同一個函數內部,所以你試圖只打電話去('測試')沒有前綴? –
是Foo,我得到'ReferenceError:去不定義' –
它適用於我使用普通的JavaScript。您應該查看瀏覽器中的源代碼,以查看您的代碼是如何編譯的。 –