検索

ホームページ  >  に質問  >  本文

angular.js - angular $q问题

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')
})

返回结果是angular.min.js:107 TypeError: Cannot read property 'then' of undefined

请问哪里错了。。。。。

高洛峰高洛峰2744日前561

全員に返信(2)返信します

  • 滿天的星座

    滿天的星座2017-05-15 17:08:27

    getMenus 関数には戻り値がなく、js はデフォルトで undefined を返し、その後、未定義の場合に発生するため、エラーが報告されます
    解決策:

    getMenusの最初の行で初期化されます

    リーリー

    最後に戻り値としてdefer.promiseを返します
    最終的にはこんな感じになるはずです

    リーリー

    もちろん、成功コールバックとエラーコールバックで Promise を返すと問題が発生します

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-15 17:08:27

    リーリー

    返事
    0
  • キャンセル返事