angular.js - isu $q sudut
高洛峰
高洛峰 2017-05-15 17:06:27
0
2
593
function getMenus() {
    if (!localStorage.getItem('menus')) {
        var defer = $q.defer();
        $http.get('api/menu').success(function (res) {
            // scope.menuList = res;
            localStorage.setItem('menus', res)
            defer.resolve();
            return defer.promise;
        }).error(function (err) {
            defer.reject()
            return defer.promise;
        });

    }
}
getMenus().then(function () {
    scope.menuList = localStorage.getItem('menus')
})

Hasil pulangan ialah angular.min.js:107 TypeError: Tidak dapat membaca sifat 'kemudian' yang tidak ditentukan

Sila beritahu saya apa yang salah. . . . .

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(2)
滿天的星座

Ralat dilaporkan kerana fungsi getMenus tidak mempunyai nilai pulangan, js mengembalikan tidak ditentukan secara lalai, dan kemudian dinaikkan pada undefined, jadi ralat dilaporkan
Penyelesaian:

Inisialisasi dalam baris pertama getMenus

var defer = $q.defer()

Akhirnya kembalikan tangguh.janji sebagai nilai pulangan
Ini sepatutnya menjadi keputusan muktamad

function getMenus() {
    var defer = $q.defer()
    if (...) {...}
    return defer.promise
}

Sudah tentu akan ada masalah jika anda membalas janji dalam panggilan balik kejayaan dan ralat

巴扎黑
function getMenus() {

    var defer = $q.defer();
    
    if (!localStorage.getItem('menus')) {
        
        $http.get('api/menu').success(function (res) {
            // scope.menuList = res;
            localStorage.setItem('menus', res)
            defer.resolve();
        }).error(function (err) {
            defer.reject()
        });

    }
    
    return defer.promise;
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan