2013-10-18 42 views
0

在angularjs控制器白化另一功能訪問函數我定義其功能的控制器:如何從使用「這個」關鍵字

myApp.controller "SomeCtrl", ($scope) -> 

@go = (text) -> 
    console.log(text) 

@go2 =() -> 
    ??go('test') 

「??」是我正在努力的。

如果我將這些函數賦值給$ scope,那麼可以使用$ scope.go()。 如何在這種情況下達到相同的效果?

http://jsfiddle.net/K7aPq/10/

+1

它在同一個函數內部,所以你試圖只打電話去('測試')沒有前綴? –

+0

是Foo,我得到'ReferenceError:去不定義' –

+0

它適用於我使用普通的JavaScript。您應該查看瀏覽器中的源代碼,以查看您的代碼是如何編譯的。 –

回答

0

不知道爲什麼它不爲你工作。如果我使用簡單的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(); 
} 
+0

謝謝Foo,但由於某種原因它不適合我。 我在原始問題中添加了小提琴 –

+0

下面是一個工作小提琴:http://jsfiddle.net/dafoo/K7aPq/16/您在'foo1('超級英雄')的電話前錯過了'this'。 '。 –

+0

Foo L你是對的,我錯過了。我錯過了一個'這個'。 –

0

在AngularJS具體會出現此問題,在控制器和指令。不知道爲什麼他們選擇劫持this,當有各種依賴注入選項......過度殺傷。

+0

尼克,你能提供更多細節嗎? –

+0

@nbaleli不是真的,但如果你谷歌「角度這個關鍵字」,你會在結果的第一頁和第二頁看到,各種各樣的人提到在角度框架中控制器和指令範圍內重複使用this。不幸,但真實。附:你總是可以設置一個局部變量到'$ scope',這樣你就不必每次都寫出'$ scope.whatever'。 :/ –

+0

@nbaleli我的觀點是,爲了在框架的範圍內編寫正確的代碼,您不應該以這種方式使用'this'。 –