将$ scope变量传递给AngularJS中的函数

时间:2014-03-19 15:35:52

标签: angularjs

我一直在尝试以角度创建一个通用的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;
    };
});

My Plunk

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