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>