Javascript 未能将承诺绑定到$scope更改
我在约束对Javascript 未能将承诺绑定到$scope更改,javascript,angularjs,Javascript,Angularjs,我在约束对的承诺时遇到问题;我认为我对范围和承诺的理解不够透彻,无法理解如何做我想做的事情 我通常设置指令: <tags-input ng-model="token.ids.tags" class="form-field no-animate tag-input" placeholder="Delete unwanted IDs" addFromAutocompleteOnly="true"> <a
的承诺时遇到问题;我认为我对范围和承诺的理解不够透彻,无法理解如何做我想做的事情
我通常设置指令:
<tags-input ng-model="token.ids.tags"
class="form-field no-animate tag-input"
placeholder="Delete unwanted IDs"
addFromAutocompleteOnly="true">
<auto-complete source="offerTags($query)"></auto-complete>
</tags-input>
但是,$scope.token.ids.tags仅在服务返回后(页面加载后)填充。所以发生的事情是offerTags总是返回一个空数组。承诺不会使用token.ids.tags服务的新值更新
编辑:
也就是说,如果将$scope.token.ids.tags替换为静态数组,则自动完成功能可以工作,但仅限于该静态数组的内容
对不起,解释得太长了。。。你知道我该怎么做吗?你的服务应该与此类似:
app.factory('TokenService', function ($http) {
return {
loadTags: function (query) {
return $http.get('/query', {
params: {
q: query
}
}).then(function(res){
return res.data;
});
}
}
});
将其纳入范围:
$scope.loadTags = TokenService.loadTags;
以及模板:
<tags-input ng-model="tags">
<auto-complete source="loadTags($query)"></auto-complete>
</tags-input>
我们能看看服务吗?它是否返回承诺?offerTags
(上面引用)是返回承诺的服务<代码>$scope.token.ids.tags
作为$http请求的回调在不同的地方更新。我想ngTagsInput在这里是一个骗人的东西-问题是承诺没有反映$scope不断变化的值。请发布更多代码或PlunkOK我同意你的观点。我修正了我的问题,问题解决了。
<tags-input ng-model="tags">
<auto-complete source="loadTags($query)"></auto-complete>
</tags-input>