Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将作用域变量作为指针发送并在控制器外部更改_Javascript_Angularjs - Fatal编程技术网

Javascript 将作用域变量作为指针发送并在控制器外部更改

Javascript 将作用域变量作为指针发送并在控制器外部更改,javascript,angularjs,Javascript,Angularjs,我有一个$scope变量表单,其中包含字段设备和代码 $scope.form = { device: '', codes: "PlaceHolder_Data" }; 我想把它传递给一个改变它的函数。例如,我希望foo($scope.form)修改代码。 我的做法是: var foo = function (obj) { obj.codes = "new data"; } 这适用于常规javascript对象,但在这里不起作用!

我有一个$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,记录任何更改,但根本不会调用它。

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

//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; 
}]);
之后,像这样将“出厂”工厂注入控制器

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

请告诉我们如何调用
foo
函数;从控制器上看,它应该可以工作。在模板中,
foo
是未定义的(因为模板中使用的所有变量都只是
$scope
的属性),所以您应该在之前将其添加到
$scope
中。我在控制器中调用它!那我就无法重现你的问题了。请提供一份报告。