我一直在尝试以角度创建一个通用的function
来更改$scope
参数值。
我一直想知道为什么我无法将$scope.var
作为argument
传递给function
,例如:
webApp.controller ('VotesCtrl', function ($scope) {
$scope.param = 42;
change($scope.param);
function change(contextParam) {
contextParam = (Math.random()*100)+1;
};
});
当我运行此功能时$scope.param
仍为42。
除此之外还有其他选择:
webApp.controller ('VotesCtrl', function ($scope) {
$scope.param = 42;
change('param');
function change(contextParam) {
$scope[contextParam] = (Math.random()*100)+1;
};
});
答案 0 :(得分:6)
简短的回答是"不要与原始价值观结合"。见http://stsc3000.github.io/blog/2013/10/26/a-tale-of-frankenstein-and-binding-to-service-values-in-angular-dot-js/
var webApp = angular.module('webApp', []);
//controllers
webApp.controller ('VotesCtrl', function ($scope) {
$scope.param = { value: 42 };
change($scope.param);
function change(contextParam) {
contextParam.value = (Math.random()*100)+1;
};
});