angularjs – 无法从控制器延迟语句中获取karma函数中的数据
发布时间:2020-12-17 17:14:41 所属栏目:安全 来源:网络整理
导读:/*This is my cart service function:*/ getCheckoutItems: function() { var defer = $q.defer(); var response = { result: true,data: '',err: '' }; if (!angular.isUndefined(productListSample)) { response.data = productListSample; defer.resolve(
/*This is my cart service function:*/ getCheckoutItems: function() { var defer = $q.defer(); var response = { result: true,data: '',err: '' }; if (!angular.isUndefined(productListSample)) { response.data = productListSample; defer.resolve(response); } else { response.result = false; response.err = 'error'; defer.reject(response); } return defer.promise; } /*This is my controller function:*/ $scope.cart = { items: [],phoneNo: '' }; $scope.getCheckoutItems = function() { CartService.getCheckoutItems().then(function(result) { $scope.cart.items = result.data; },function(err) { /* * Todo: handle when service fails to retrieve data. */ }); }; /* This is karma test function */ it('get checkout items',inject(function($controller) { $controller('Ctrl',{ $scope: scope }); scope.getCheckoutItems(); console.log(scope.cart); }));
解决方法
更换
scope.getCheckoutItems(); console.log(scope.cart); 通过 scope.getCheckoutItems(); scope.$apply(); console.log(scope.cart); 当范围为$apply时,将调用Promise回调. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |