我正在使用ngTagsInput来处理我的AngularJS项目中的标签。它有一个自动完成指令。要处理进入指令的数据,它假定您要执行:
$scope.loadTags = function(query) {
return $http.get('tags.json');
};
返回一个承诺。这里有一个棘手的部分,我想做同样的事情,但我已经在我的$ scope中有一个对象,它有我想要用于自动完成的所有标记。我不能简单地执行$ scope.loadTags,因为这会返回错误。
无法读取属性'然后'未定义。
如何绕过这个承诺或推迟呢?
这是我的傻瓜http://plnkr.co/edit/wEqVMf?p=preview
指令: app.directive(' tag',function($ http){ 返回{ 限制:' E', templateUrl:' tag.html', link:function(scope,el){ scope.tags = [ {text:' Tag1' }, {text:' Tag2' }, {text:' Tag3' } ];
var test = [{ text: 'Tag9' },{ text: 'Tag10' }];
scope.loadTags = test;
}
}
});
位于<tag>
<tags-input ng-model="tags">
<auto-complete ng-model="loadTags"></auto-complete>
</tags-input>
<p>Model: {{tags}}</p>
答案 0 :(得分:2)
使用$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>