angular.js - angular中factory里可以操作controller里的数据吗
PHP中文网
PHP中文网 2017-05-15 17:06:12
0
3
595

我想在factory中获取并改变顶级控制器里的变量 可以办到吗

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(3)
習慣沉默

Secara amnya apabila saya mengusahakan projek, perkhidmatan mempunyai dua tujuan:
Pertama, ia digunakan sebagai kaedah awam, seperti kaedah penyerahan, perkhidmatan tertentu dalam kotak timbul dan perkhidmatan am lain yang serupa.
Kedua, ia digunakan apabila memindahkan parameter atau objek antara pengawal tertentu mengikut keperluan khas Situasi ini jarang berlaku dan biasanya tidak disyorkan~

Apabila anda bercakap tentang menukar pembolehubah pengawal peringkat atas dalam perkhidmatan, saya rasa anda memberikan serpihan idea anda, bukannya titik permintaan asas~ Apakah permintaan anda?

某草草

Ia tidak boleh dikendalikan secara langsung, terdapat dua cara:
1 Tukar nilai melalui fungsi panggil balik
2

<!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>
漂亮男人

Boleh, tetapi tidak disyorkan.
Enkapsulasi data pengawal ke dalam objek, dan kemudian hantarkannya sebagai parameter kepada kaedah kilang.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan