angular.js - angular中factory裡可以操作controller裡的資料嗎
PHP中文网
PHP中文网 2017-05-15 17:06:12
0
3
611

我想在factory中取得並改變頂級控制器裡的變數 可以辦到嗎

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(3)
習慣沉默

一般我在做專案的時候,服務就做倆用途:
第一,是作為公共方法,例如提交方法,彈出框的某些服務等等類似的通用的服務。
第二,是根據特殊的需求在某幾個控制器之間傳遞參數或物件時候使用,這種情況很少,一般也不推薦~

你說的在服務中去改變頂級控制器的變量,我感覺你是提供了你思路上的一個片段,而不是根本需求點~你的需求是什麼?

某草草

沒法直接操作,有兩種方式:
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的方法裡就可以了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板