【发布时间】:2014-02-18 23:50:50
【问题描述】:
好的,我在一个服务中有这个功能:
wikiServices = angular.module('wikiServices', []);
wikiServices.factory('newsService', function($http, $q){
var chosenNewsStory = "";
var getNewsStory = function(news_id, callback){
var deferred = $q.defer();
$http({
method: "GET",
url: "news/article/" + news_id
})
.success(function(newsStory){
deferred.resolve(newsStory);
console.log("RESOLVED " + newsStory);
});
return deferred.promise;
});
控制器 1:
wikiControllers = angular.module('wikiControllers', []);
wikiControllers.controller('ctrl1', ['$scope', 'newsService',
function($scope, newsService){
$scope.getNewsStory = newsService.getNewsStory(function(input){
newsService.getNewsStory(news_id);
};
});
控制器 2:
wikiControllers = angular.module('wikiControllers', []);
wikiControllers.controller('ctrl1', ['$scope', 'newsService',
$scope.watch('newsService.chosenNewsStory', function(newVal){
console.log(newVal);
});
});
现在,我已经尝试在服务的很多地方设置“chosenNewsStory”,但我认为我错过了整个 JS 的一个关键部分——“体验”。
我在将服务中的“var selectedNewsStory”设置为从服务器获取的 newsStory 时遇到问题。我该怎么做?
谢谢。
【问题讨论】:
-
请显示更多代码
-
我回家后会做的。
-
好的,已经更新了。 :)
-
你必须从服务中
returnchosenNewsStory`,否则你将无权访问它,因此你的$watch没有做任何事情。对于需要共享的变量,我更喜欢返回get和set方法。 -
我已经设法检索到变量,但我无法设置它。我应该把设置代码放在哪里?我试图在 deferred.resolved() 之前设置 selectedNewsStory = newsStory 但我认为这是一个范围问题。
标签: angularjs