如何将参数传递给角度服务或工厂?

时间:2014-08-14 23:30:28

标签: javascript angularjs

这个plunker最好:http://plnkr.co/edit/y3uacaQSc1MbrWKfb0At?p=preview

但这是代码:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,testFactory) {
  $scope.name = 'World';
  var test_var = "iceland";
  $scope.testFunction = testFactory.testFunction;

});

app.service('testFactory',function(){

  this.testFunction = function(){
    alert(test_var);
  };

})

并在html中:

<body ng-controller="MainCtrl">
    <p ng-click="testFunction()">Hello {{name}}!</p>

  </body>

现在,正如你在plunkr中看到的那样,test_var是未定义的,这是有道理的,因为它没有定义......所以我想从控制器传递它,但如果我做了类似的事情 $scope.testFunction = testFactory.testFunction(test_var);,然后testFunction因为括号而与警报一起执行。但我只想传递test_var,而不是执行该函数。我该如何传递?

1 个答案:

答案 0 :(得分:3)

在一个函数中包含调用,以便仅在testFactory.testFunction(test_var)为...时调用$scope.testFunction()的调用。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,testFactory) {
  $scope.name = 'World';
  var test_var = "iceland";
  $scope.testFunction = function() {
    testFactory.testFunction(test_var);
  };
});

app.service('testFactory',function(){

  this.testFunction = function(test_var){
    alert(test_var);
  };

})