将Scope变量作为指针发送并在控制器外部进行更改

时间:2015-03-25 14:56:56

标签: javascript angularjs

我有一个$ scope变量表单,其中包含设备和代码字段。

    $scope.form = {

        device: '',

        codes: "PlaceHolder_Data"

    };

我想将其传递给改变它的函数。例如,我想要foo($ scope.form)来改变代码。 我这样做的方式是:

var foo = function (obj) {
     obj.codes = "new data";
}

这适用于常规的javascript对象,但在这里不起作用! foo虽然是异步函数。我还在$ scope.form.codes上注册了一个$ watch到console.log的任何更改但是根本没有被调用。

1 个答案:

答案 0 :(得分:0)

尝试将对象放入工厂,然后使用服务进行更改。

//create the function to apply to form
app.service('exService', function(){ 
       this.exFunction(form){
          //do stuff to form
       return // create new stuff
        };
});

//apply service to the form object
app.factory('exFactory', ['exService', function(exService) {
   var exForm = {
       device: '',
       codes: "PlaceHolder_Data"
   };
   var o = exService.exFunction(exForm) //applying service to form
   return o; 
}]);
之后注入' exFactory'工厂进入你的控制器就像这样

app.controller('exController',['$scope', 'exFactory', function($scope, exFactory){
      //Do suff with exFactory
}]);