angular.js - sudut melepasi $skop ke dalam perkhidmatan
我想大声告诉你
我想大声告诉你 2017-05-15 16:50:23
0
4
697
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

我想大声告诉你
我想大声告诉你

membalas semua(4)
左手右手慢动作

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.

黄舟

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.

某草草

Pergi ke blog saya dan hantarkannya sebagai parameter panggil balik

小葫芦

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

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