cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - masalah angularjs menggunakan fungsi dalam arahan

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

巴扎黑巴扎黑2775 hari yang lalu519

membalas semua(1)saya akan balas

  • PHP中文网

    PHP中文网2017-05-15 16:52:57

    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.

    balas
    0
  • Batalbalas