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回调. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
