angular.js - masalah angularjs menggunakan fungsi dalam arahan
巴扎黑
巴扎黑 2017-05-15 16:50:57
0
1
522

Saya sendiri menulis arahan, seperti berikut:

html

<myDirective source="listOne()"</myDirective>
<myDirective source="listTwo()"</myDirective>

pengawal

...
$scope.listOne = function(){
    //返回一个promise
};
$scope.listTwo = function(){
    //返回另一个promise
};
...

arahan

angular.module('myApp')
    .directive('myDirective', function() {
        function DataList(sourceFn) {
            var debounceId;
            self.list = [];
            self.load = function(){
                $timeout.cancel(debounceId);
                debounceId = $timeout(function() {
                    var promise = sourceFn();
                    promise.then(function(data) {
                        self.list = data;
                    });
                },0,false);
            };
            return self;
        }

        return {
            restrict: 'E',
            replace: true,
            scope: {
                source: '&'
            },
            link: function(scope, element, attr) {
                ...
                var data = new DataList(scope.source);
                ...
                scope.dataset = data.list;
                ...
            },
            template: '\
            ...\
            <li ng-repeat="d in dataset">{{d}}</li>\
            ...\'
        };
    }

Kemudian masalah datang Dijangkakan bahawa kedua-dua sumber akan mengembalikan dua set data yang berbeza, tetapi keadaan sebenar ialah data yang dipaparkan dalam dua senarai adalah sama, dan ia adalah data yang dikembalikan oleh fungsi kedua listTwo(), iaitu, jika saya menukar kedudukan listOne() dan listTwo(), dan data yang dikembalikan ialah data listOne().
Mungkinkah

var data = new DataList(scope.source);
...
scope.dataset = data.list;

Apabila menggunakan baharu untuk kali kedua, adakah anda menggantikan data dari kali pertama?
Tetapi tidakkah skop:{source: '&'} menjana skopnya sendiri untuk arahan itu?
Saya ingin belajar arahan dengan baik, terima kasih terlebih dahulu

巴扎黑
巴扎黑

membalas semua(1)
Ty80

Ini adalah masalah dengan DataList anda Perkara yang anda pulangkan ialah rujukan sendiri, yang kelihatan seperti tetingkap, jadi senarai yang sepadan ialah pembolehubah global, jadi tidak kira berapa kali anda menetapkan nilai, hanya yang terakhir akan berkuat kuasa.

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