angular.js - angular $q问题
高洛峰
高洛峰 2017-05-15 17:06:27
0
2
555
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

请问哪里错了。。。。。

高洛峰
高洛峰

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

全員に返信(2)
滿天的星座

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

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

リーリー

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

リーリー

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

いいねを押す +0
巴扎黑

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート