Rumah  >  Soal Jawab  >  teks badan

angular.js - angular中factory里可以操作controller里的数据吗

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

PHP中文网PHP中文网2714 hari yang lalu569

membalas semua(3)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-15 17:08:12

    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?

    balas
    0
  • 某草草

    某草草2017-05-15 17:08:12

    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>
    

    balas
    0
  • 漂亮男人

    漂亮男人2017-05-15 17:08:12

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

    balas
    0
  • Batalbalas