我想在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的方法裡就可以了。