角度范围变量未在视图中更新

时间:2014-08-17 13:39:11

标签: javascript angularjs

初学者的角度问题。可能。

为什么

//1
function setValue(target, value) {
    target = value;
}
setValue($scope.var1, 25);

不起作用,但是

//2
function setValue(target, value) {
    $scope[target] = value;
}
setValue("var1", 25);

确实

代码在控制器内部。我正在尝试使我的代码更加模块化,但我不赞成将变量作为字符串而不是作为引用传递。我尝试向前者添加$scope.$apply(),就像我在其他地方向我建议的那样,但是这里发生了错误。

非常感谢

1 个答案:

答案 0 :(得分:0)

$scope的值发生变化时,Angularjs会更新它的视图。

所以根据你的第一个代码块

function setValue(target, value) {
    target = value; 
}
setValue($scope.var1, 25);

因为$scope.var1是一个字符串,所以这里它将通过值传递,&当您更新目标变量时$scope保持不变,这就是为什么它没有被更改。

在你的第二个代码块中

function setValue(target, value) {
    $scope[target] = value;
}
setValue("var1", 25);

您可以直接更改$scope,以便更新视图。