绕过/延迟AngularJS$http.get承诺
我在AngularJS项目中使用ngTagsInput来处理我的标记。它有一个自动完成指令。要处理进入指令的数据,它假定您将执行以下操作:绕过/延迟AngularJS$http.get承诺,angularjs,promise,Angularjs,Promise,我在AngularJS项目中使用ngTagsInput来处理我的标记。它有一个自动完成指令。要处理进入指令的数据,它假定您将执行以下操作: $scope.loadTags = function(query) { return $http.get('tags.json'); }; 这是一个承诺。下面是一个棘手的部分,我想做与此相同的事情,但我的$scope中已经有一个对象,它包含了我想要用于自动完成的所有标记。我不能简单地执行$scope.loadTags,因为这会返回一个错误 无法
$scope.loadTags = function(query) {
return $http.get('tags.json');
};
这是一个承诺。下面是一个棘手的部分,我想做与此相同的事情,但我的$scope中已经有一个对象,它包含了我想要用于自动完成的所有标记。我不能简单地执行$scope.loadTags,因为这会返回一个错误
无法读取未定义的属性“then”
我如何绕过这个承诺或推迟它
这是我的宝贝
指令:
app.directive('tag',function($http){
返回{
限制:'E',
templateUrl:'tag.html',
链接:功能(范围,el){
scope.tags=[
{text:'Tag1'},
{text:'Tag2'},
{text:'Tag3'}
])
var test = [{ text: 'Tag9' },{ text: 'Tag10' }];
scope.loadTags = test;
}
}
});
在
模型:{{tags}}
使用$q.when()
从数组创建已解析的承诺
scope.loadTags = function () {
var test = [{ text: 'Tag9' },{ text: 'Tag10' }];
return $q.when(test);
};
tag.html
模板中还有一个添加错误。ng model=“loadTags”
应该是source=“loadTags(query)”
<tags-input ng-model="tags">
<auto-complete source="loadTags(query)"></auto-complete>
</tags-input>
<tags-input ng-model="tags">
<auto-complete source="loadTags(query)"></auto-complete>
</tags-input>