2013-04-25 197 views
0

變量函數在我app.js我已經定義的函數是這樣的:呼叫在AngularJS

var func1 = function(v1,v2,v3) { 
    . 
    . 
} 

var func2 = function(v1,v2,v3) { 
    . 
    . 
} 

在我controller.js

var action = ""; 

if(..) { action = 'func1';} 
else {action = 'func2'} 

action(a1,a2,a3); 

但是,我得到一個錯誤,說動作不是功能。我怎樣才能像這樣訪問func1和func2``?

+3

嘗試'action = func1 ... action = func2' – 2013-04-25 05:15:43

+0

@ JanDvorak- Works!謝謝 – 2013-04-25 05:19:54

回答

4

嘗試刪除引號一樣,變化:

if(..) { action = 'func1';} 
else {action = 'func2'} 

if(..) { action = func1;} 
else {action = func2;} 

補充: 你,當你爲func1加引號的操作變量指定的字符串,您可以檢查它這樣做:

var func1 = function(v1,v2,v3) { 
    alert("first"); 
}; 
var test_this = func1; 
console.log(typeof test_this); //gives you function 

where as

var test_this = 'func1'; //with quotes added 
console.log(typeof test_this); //gives you string 
+0

Works ..謝謝你..你能解釋爲什麼它是這樣嗎?在正常的JavaScript我們實際上使用''。 – 2013-04-25 05:20:40

+0

@BhumiSinghal引號表示一個字符串。看來'行動'想要一個功能。 – 2013-04-25 05:21:50

+0

@JanDvorak - 哦!我實際上是在思考JavaScript的基礎上。:) – 2013-04-25 05:23:44

1

您試圖從字符串訪問函數。我不是專家,但你可以試試

if (..) { 
    func1(a1, a2, a3); 
} else { 
    func2(a1, a2, a3); 
} 
+0

實際上這是類似編程的基礎知識,但我不能這樣做。我需要使用var來訪問。謝謝 – 2013-04-25 05:19:25