cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - sudut melepasi $skop ke dalam perkhidmatan

app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';

    service.say($scope);
}]);

app.service('xxx', [function() {
    this.say = function($scope) {
    }
}]);

Terdapat banyak situasi sedemikian dalam kod yang dikekalkan. Adakah ini penggunaan yang salah? Rasanya bagus untuk digunakan, tetapi kodnya sangat mengelirukan

我想大声告诉你我想大声告诉你2774 hari yang lalu703

membalas semua(4)saya akan balas

  • ringa_lee

    ringa_lee2017-05-15 16:52:23

    Ini jelas merupakan pendekatan malas, yang menjadikan maksud kaedah perkhidmatan sangat kabur Jika anda memasukkan $scope ke dalamnya, parameter yang digunakan sebenarnya tidak akan jelas.
    Dan ia menyebabkan kaedah perkhidmatan mempunyai pergantungan yang tidak perlu pada $scope.

    balas
    0
  • 黄舟

    黄舟2017-05-15 16:52:23

    Tegasnya, nilai status bukan global tidak boleh diproses dalam perkhidmatan, terutamanya pengubahsuaian. Ini ialah $scope. Dalam erti kata lain, perkhidmatan di sini adalah serupa dengan antara muka Senarai parameter fungsi harus jelas, bukannya parameter umum.
    Seperti

    app.contronller('xxx', ['$scope', 'service', function($scope, service) {
        $scope.xxx = 'xxxx';
        service.say($scope.xxx);
    }]);
    app.service('xxx', [function() {
        this.say = function(word) {
    }}]);
    

    Sudah tentu, pembolehubah global seperti $location dan $rootScope boleh digunakan kerana ia tidak perlu melalui komponen lain.

    balas
    0
  • 某草草

    某草草2017-05-15 16:52:23

    Pergi ke blog saya dan hantarkannya sebagai parameter panggil balik

    balas
    0
  • 高洛峰

    高洛峰2017-05-15 16:52:23

    Malah, apabila saya menguji, saya mendapati bahawa jika anda mengembalikan nilai dalam perkhidmatan kepada $scope dalam pengawal, penutupan nampaknya tidak mempunyai kesan Namun, lulus $scope in akan mengemas kini secara langsung $scope dalam pengawal dalam perkhidmatan ini sangat mudah digunakan

    balas
    0
  • Batalbalas