"Controllers as" $timeout 中的语法

"Controllers as" syntax in $timeout

今天我试图通过在 $timeout 中使用 "controller as" 语法来解决问题。我试着做一个 "fake pointer",使用对象。不幸的是它不起作用。有人知道如何在不使用 $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);