我想在factory中获取并改变顶级控制器里的变量 可以办到吗
认证高级PHP讲师
一般我在做项目的时候,服务就做俩用途:第一,是作为公共方法,比如提交方法,弹出框的某些服务等等类似的通用的服务。第二,是根据特殊的需求在某几个控制器之间传递参数或对象时候使用,这种情况很少,一般也不推荐~
你说的在服务中去改变顶级控制器的变量,我感觉你是提供了你思路上的一个片段,而不是根本需求点~你的需求是什么?
没法直接操作,有两种方式:1、通过回调函数的方式改变值2、通过传对象参数的方式改变值(array,object)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> </head> <body ng-app="myApp" > <p ng-controller="myCtrl"> {{ value.name }} {{ value.value }} </p> <hr /> <p ng-controller="myCtrl2"> {{ value.name }} {{ value.value }} </p> <script> var app = angular.module('myApp', []); app.service('myService', function() { this.valueSet = function(value){ this.valueFunction(value); }; this.valueCallback = function(callback){ var newValue = { name : "hello", value : "world" }; this.valueFunction(newValue); callback(newValue); }; this.valueFunction = function(value){ value.name += ","; value.value += "!"; return value; }; }); app.controller('myCtrl', ['$scope', 'myService', function($scope, myService) { $scope.value = { name : "你好", value : "世界" }; //回调方式改版 $scope 的值 myService.valueCallback(function(value){ $scope.value = value; }); }]); app.controller('myCtrl2', ['$scope', 'myService', function($scope, myService) { $scope.value = { name : "你好", value : "世界" }; myService.valueSet($scope.value); }]); </script> </body> </html>
可以是可以,但是不推荐。将controller的数据封装到一个对象里,然后当作参数传到factory的方法里就可以了。
一般我在做项目的时候,服务就做俩用途:
第一,是作为公共方法,比如提交方法,弹出框的某些服务等等类似的通用的服务。
第二,是根据特殊的需求在某几个控制器之间传递参数或对象时候使用,这种情况很少,一般也不推荐~
你说的在服务中去改变顶级控制器的变量,我感觉你是提供了你思路上的一个片段,而不是根本需求点~你的需求是什么?
没法直接操作,有两种方式:
1、通过回调函数的方式改变值
2、通过传对象参数的方式改变值(array,object)
可以是可以,但是不推荐。
将controller的数据封装到一个对象里,然后当作参数传到factory的方法里就可以了。