Javascript 将作用域变量作为指针发送并在控制器外部更改
我有一个$scope变量表单,其中包含字段设备和代码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.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
中。我在控制器中调用它!那我就无法重现你的问题了。请提供一份报告。