2015-03-31 28 views
1

今天我試圖用「控制器」語法$超時來解決問題。我試圖用object來做一個「假指針」。不幸的是它不工作。有人想法如何解決這個問題,而不使用$ scope

this.shakeNotValid = {val: true}; 

function objChange (obj) { 
    console.log(obj.val); 
    obj.val = false; 
    console.log(obj.val); 
} 

$timeout(objChange(this.shakeNotValid), 400); 

回答

2

當使用角度,我建議你使用一個變量爲「本」,阻止範圍的誤差。

var scope = this; 
scope.shakeNotValid = {val: true}; 

function objChange (obj) { 
    console.log(obj.val); 
    obj.val = false; 
    console.log(obj.val); 
} 

$timeout(function(){objChange(scope.shakeNotValid)}, 400); 
+0

它的工作,非常感謝! :) – Machycek 2015-03-31 20:06:33

1

您的$timeout一個錯誤,你忘了匿名函數:

var scope = this; 
scope.shakeNotValid = {val: true}; 

$timeout(function() { 
    objChange(scope.shakeNotValid) 
} , 400); 

$timeout在等待第一個參數的函數的功能。 onChange()(帶支架)調用的功能,但它不是一個功能。

+0

它不工作。錯誤「」。當前代碼:this.shakeNotValid = {val:true}; \t \t \t功能objChange(OBJ){ \t \t \t obj.val = FALSE; \t \t \t} \t \t \t $超時(函數(){ \t \t \t objChange(this.shakeNotValid); \t \t \t},400); – Machycek 2015-03-31 12:09:41

+0

@ user3452592將'this'捕捉到像kikerrobles的答案中的變量 – R3tep 2015-03-31 12:12:14

+0

它不起作用。 TypeError「無法設置屬性'val'未定義」。 當前代碼: this.shakeNotValid = {VAL:真}; 功能objChange(OBJ){ obj.val = FALSE; ()函數(){ objChange(this.shakeNotValid); },400); 在我看來它不工作,因爲在$超時使用「this」。無論如何感謝很多:) – Machycek 2015-03-31 12:16:45