Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;控制器为;$timeout中的语法_Javascript_Angularjs_Pointers_Reference - Fatal编程技术网

Javascript &引用;控制器为;$timeout中的语法

Javascript &引用;控制器为;$timeout中的语法,javascript,angularjs,pointers,reference,Javascript,Angularjs,Pointers,Reference,今天,我试图解决在$timeout中使用“controller as”语法的问题。我试着用object做一个“假指针”。不幸的是,它不起作用。有人知道如何在不使用$scope的情况下解决此问题吗 this.shakeNotValid = {val: true}; function objChange (obj) { console.log(obj.val); obj.val = false; console.log(obj.val); } $timeout(objCh

今天,我试图解决在$timeout中使用“controller as”语法的问题。我试着用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);

您的
$timeout
中有一个错误,您忘记了匿名函数:

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

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

函数
$timeout
在第一个参数中等待函数
onChange()
(带括号)调用一个函数,但它不是一个函数。

使用Angular时,我建议您为“this”使用一个变量,以防止范围错误

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);

它不起作用了。错误“”。当前代码:this.shakeNotValid={val:true};函数objChange(obj){obj.val=false;}$timeout(函数(){objChange(this.shakeNotValid);},400)@user3452592将“this”捕获到一个变量中,就像kikerroblesIt的答案一样,它不起作用。TypeError“无法设置未定义的属性“val”。当前代码:this.shakeNotValid={val:true};函数objChange(obj){obj.val=false;}$timeout(函数(){objChange(this.shakeNotValid);},400);在我看来,它不起作用,因为在$timeout中使用了“this”。无论如何,非常感谢:)