当我在阅读 Pluralsight 的基础知识时AngularJS
,我对自己$http + $q.defer()
没有按应有的工作方式感到困惑。似乎即使deferred
变量已经解决,更改仍然没有级联到控制器上。
我的观点:
<li class="row" ng-repeat="item in jsonData.Items">
我的服务:
mediaApp.factory('ServiceData', function ($http,$q) {
return{
getJson: function ($scope) {
var deferred = $q.defer();
$http(
{
method: 'GET',
url: url
}).
success(function (data, status, header, config) {
$timeout(function () {
deferred.resolve(data);
});
})
}
我的控制器:
$scope.jsonData = ServiceData.getJson($scope);
同时,这些代码行在控制器上工作:
ServiceData.getJson($scope).
then(function (data) {
$scope.jsonData = data;
});
有人可以启发我吗?我相信解决方法已经是正确的,但我想了解为什么代码的某些实现不能按预期工作。
是什么赋予了?