【发布时间】:2015-09-25 06:02:51
【问题描述】:
我正在使用工厂来检索数据,使用$http 和controllerAs 功能注入我的视图。如果不使用$scope,我在将$http 响应数据返回到我的控制器中的属性时遇到问题。
我的工厂
myApp.factory('Topics', function ($http, $q) {
var service = {},
_error = 'Oh no! Something went wrong. Please check back later.';
service.getTopics = function () {
var deferred = $q.defer();
$http.get(_url).success(function (resp) {
deferred.resolve(resp);
}).error (function () {
deferred.reject(_error);
});
return deferred.promise;
}
return service;
});
我的控制器
myApp.controller('TopicsCtrl', function (Topics) {
this.topics = (function () {
return Topics.getTopics().then(function (resp) {
console.log(resp);
return resp;
});
})();
}
我的观点
<h1>{{ top.topics }}</h1>
就像我说的,我在配置为top 的路由中使用controllerAs。控制器中的console.log 记录了我要查找的内容,但topics 的值在注入视图时为空。留下我和 {}。
附:据我了解$http 是$q 的抽象,这让我想知道在这个例子中使用$q 是否是不必要的。
【问题讨论】:
标签: angularjs angularjs-service angular-promise angularjs-http