Я читал в нескольких местах, что $ q изящно интегрируется в сферу применения в Angular JS. Предположим, что у вас есть это:
var superService = function() {
var deferred = $q.defer();
deferred.resolve(['foo', 'bar']);
return deferred.promise;
};
Конечно, $ д бесполезно здесь, но если я использую $ таймаут или запустить HTTP вызов $, результат тот же.
Если я это сделать:
superService().then(function(data) {
$scope.result = data;
});
Это нормально. Но если я это сделаю:
$scope.result = superService();
Это также должно быть в порядке. Но в моем случае $ scope.result содержит 3 элемента (они видны в моем шаблоне с ng-repeat): функции «then», «catch» и «finally», я думаю ... вместо ['foo' , 'bar'], конечно.
Мой конкретный пример:
angular.module('myModule', [])
.factory('HelloWorld', function($q, $timeout) {
var getMessages = function() {
var deferred = $q.defer();
deferred.resolve(['Hello', 'world']);
return deferred.promise;
};
return {
getMessages: getMessages
};
})
.controller('HelloCtrl', function($scope, HelloWorld) {
$scope.messages = HelloWorld.getMessages();
//HelloWorld.getMessages().then(function(data) {
// $scope.messages = data;
//});
});
Любая идея здесь?
Я не вижу здесь вопроса. – Stewie
Я знаком с тем, с чем он сталкивается, - см. Мой ответ - и это совершенно правильный, если не совсем ясный, быстрый взгляд. –
Я вижу здесь проблему. Проблема приводит к вопросу. Прочитайте проблему, как прочитайте вопрос ... По крайней мере, один человек, похоже, понял мою проблему: он решен;) – neolitec