Angular会在指令链接执行之前获取承诺数据
Angular get promise data before directive link execution
我正在研究一个需要一些信息才能工作的指令。但是这些信息来自于承诺,而指令的加载却没有这些信息,因为它比指令本身花费更多的时间。
angular.module('app').directive('tagInput', tagInput);
var tagInput = function ($timeout, profileService) {
var profileList = profileService.getProfileList();
profileList.then(function (profiles) {
var profileObject = {};
var profilesFiltered = [];
for(var index in profiles){
if(profiles[index].hasOwnProperty('id')){
var notStandard = profiles[index].id.match(/'d+/g);
if (notStandard != null) {
profileObject.icon = '<i class="fa fa-bookmark" aria-hidden="true"></i>';
}
else{
profileObject.icon = '<i class="fa fa-user" aria-hidden="true"></i>';
}
profileObject.name = profiles[index].name;
profileObject.identifier = profiles[index].id;
profileObject.ticked = false;
profilesFiltered.push(profileObject);
}
}
return profilesFiltered;
});
return {
restrict: 'EA',
require: 'ngModel',
scope: {
tags: '=ngModel',
searchParams: '=searchParams'
},
replace: false,
link: function ( scope, element, attrs ) {
scope.modelFilter = {
showSearchPanel: false,
inputProfiles: profilesFiltered,
...
这样,模板中的数据总是显示为空。如何在指令链接执行之前准备数据?也许我需要一个类似于inputAccounts: accountsFiltered,
的承诺。
首先,你不能在指令的呈现和承诺之间做依赖关系,有一种方法,但这是一个反模式。你需要换个角度看问题。
例如,如果你希望scope.modelFilter
只在承诺结束时填充,你可以在指令的link函数中创建一个监视器。观看配置文件过滤字段和内部回调填充modelFilter
。
相关文章:
- “未捕获(在承诺中)”在获取“then”方法中调用拒绝函数时
- 如何获取 Ember 组件对象内部承诺成功或错误回调
- es6 获取/承诺上下文
- 角度承诺:如果可用,从缓冲区获取数据
- 如何使用 Parse.promise javascript 定义一个承诺数组并获取结果数组 [parse.com]
- 如何在解决承诺后从承诺对象获取值
- 是否可以覆盖本机获取 API 以使用所需的承诺库而不是本机浏览器承诺
- 从异步函数返回的承诺中获取值
- Angular 没有从 FS.readFile 获取带有承诺的数据
- 从承诺响应中获取价值
- 从承诺中获取数据,而不是返回承诺
- AngularJS承诺在foreach中获取数据
- 承诺获取和处理数组
- 无法获取属性'那么'使用承诺
- 使用SeleniumWD作为承诺从标签文本中获取输入
- 从q.js承诺链中的任何承诺中获取和设置一个值
- 无法使用承诺获取对象
- 如何在承诺中获取数据数组
- Angular会在指令链接执行之前获取承诺数据
- 获取承诺数组的大小(量角器)