初学者的角度问题。可能。
为什么
//1
function setValue(target, value) {
target = value;
}
setValue($scope.var1, 25);
不起作用,但是
//2
function setValue(target, value) {
$scope[target] = value;
}
setValue("var1", 25);
确实
代码在控制器内部。我正在尝试使我的代码更加模块化,但我不赞成将变量作为字符串而不是作为引用传递。我尝试向前者添加$scope.$apply()
,就像我在其他地方向我建议的那样,但是这里发生了错误。
非常感谢
答案 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
,以便更新视图。