angular.js - angular $q问题
高洛峰
高洛峰 2017-05-15 17:06:27
0
2
554
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는 기본적으로 정의되지 않은 값을 반환한 다음 정의되지 않은 경우에 발생하므로 오류가 보고됩니다.
해결책:

getMenus의 첫 번째 줄에서 초기화

으아악

마지막으로 defer.promise를 반환 값으로 반환합니다
결국 다음과 같아야 합니다

으아악

물론 성공 및 오류 콜백에서 프라미스를 반환하면 문제가 발생합니다

巴扎黑

으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿