我有一个AngularJS 1.5指令:
var assetSearchService = function(proService) {
var assets = [];
var searchAssets = function(searchTerm){
proService.searchAssets(searchTerm).then(function(data){
assets = data.data;
});
};
return {
searchAssets, searchAssets,
assets: assets
};
};
当我在调用搜索后尝试在我的控制器中使用assetSearchService.assets
时,数据未在assetService.assets
中设置。
如果我在searchAssets
承诺返回后记录数据,我将获取数据。
this.assets
不起作用,所以如何从回调中获取变量?
答案 0 :(得分:1)
找到答案。 assets = newArray
和conact
都不起作用,因为它们都返回一个新数组并中断引用,而不是修改当前引用。
这有效:
Array.prototype.push.apply(assets, data.data);
以下是一个工作示例:https://jsfiddle.net/mbaranski/5k4bqo0z/
答案 1 :(得分:0)
您可以实现更复杂的解决方案
var assetSearchService = function(proService) {
service = this;
service.assets = [];
service.searchAssets = function(searchTerm){
proService.searchAssets(searchTerm).then(function(data){
assets.push(data.data);
});
};
return service;
};