失败绑定 Angular 承诺$scope变化
Failure binding Angular promise to $scope change
在使用ngTagsInput时,我在绑定<autocomplete source='fnPromise()'>
的承诺时遇到问题。我不认为ngTagsInput有什么问题;我认为我对范围和承诺的理解不够充分,无法理解如何做我想做的事情。
我正常设置指令:
<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>
问题出在 offerTags() 函数上。这将返回一个 promise,但由于我想用该控制器$scope的一部分数组填充自动完成功能,所以我告诉 promise 只返回该$scope属性:
$scope.offerTags=function(query) {
var deferred=$q.defer();
var tags=$scope.token.ids.tags;
deferred.resolve( tags);
return deferred.promise;
}
但是,$scope.token.ids.tags 仅在服务返回后(页面加载后)填充。所以发生的情况是offerTags总是返回一个空数组。承诺不会使用 token.ids.tags 服务的新值进行更新。
编辑:Plunkr演示问题
即,如果将 $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>
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- 单击页面上的链接后高度发生变化
- $ionicplatform内的$scope不;不起作用
- 使用$scope方法时的ControllerAs语法
- 如何将ngrepeat下的ngmodel绑定到$scope
- React redux初始化功能,无论状态变化如何
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- 角度ng变化或ng点击选择can'不起作用
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- $scope变量被视为字符串AngularJs
- 当$scope模型发生变化时,角度视图不会发生变化
- ng-在 Angularjs 中重复 当$scope变化时
- 棱角分明,观察$scope的变化
- 当角度$scope发生变化时,不要更新 HTML
- 失败绑定 Angular 承诺$scope变化
- AngularJs:如何在值变化时启动动画(ng-scope)
- 如何准确地找出$scope中发生了什么变化$看
- jQuery如何在自定义指令中响应$scope的变化?
- 仅当$scope数据发生变化时更新DOM