Aurelia@儿童动态数据
Aurelia @children with dynamic data
假设我有一个自定义元素,在其中我迭代一个数据数组并呈现自定义子元素。
<my-list action-handler.bind="actionHandler">
<my-element item.bind="element" repeat.for="element of data"></my-element>
</my-list>
在my-list.html
中,我用<contents></contents>
呈现内容,通常实际代码有点复杂,并且有可替换的模板部分,但这不是问题所在。
我希望我绑定到MyList
的actionHandler
在所有子级中都可用。为了美观起见,我们在my-list.js
:中这样做
@children('*:not(div)') listItems;
//...
attached(){
this.listItems.forEach((e) => {
e.actionHandler = this.actionHandler;
});
}
在我们开始动态加载数据之前,一切都很顺利。在这种情况下,listItems
是空的,因为在重新呈现子元素之前对元素进行初始化。
因此,问题是:
如何重新计算@children
?
我知道,当我们重复actionHandler
时,我们可以将其绑定到所有的孩子,但当我们添加更多的逻辑(如)时,这会变得非常丑陋
谢谢!
如果<my-element>
依赖于它的父<my-list>
元素的actionHandler,您可以声明性地表达它,并让Aurelia的依赖注入系统来完成其余的工作。。。
如果<my-element>
总是在<my-list>
内(不一定需要直接在内):
import {inject} from 'aurelia-dependency-injection';
@inject(MyList)
export class MyElement {
constructor(list) {
this.actionHandler = list.actionHandler;
}
}
如果您需要访问<my-element>
最近的父自定义元素,无论它是什么:
import {inject, Parent} from 'aurelia-dependency-injection';
@inject(Parent.of(Element))
export class MyElement {
constructor(parent) {
this.actionHandler = parent.actionHandler;
}
}
我知道这并不是你所要求的,但我建议这样做,以防这是一种更简单的方式来满足你的要求。
Aurelia作弊表告诉我们:
@children(选择器)-修饰一个属性以在类上创建一个数组,该数组根据查询选择器针对元素的立即子内容自动同步其项。
所以我认为CCD_ 14不可能与动态数据一起使用。
你可能应该采用"家长"的方法,就像前面的答案所建议的那样。
相关文章:
- 下载使用POST数据动态生成的文件
- 使用enyo.js将数据动态插入表中
- (Laravel)使用数据库中的数据动态打开模态
- 如何根据数据动态创建引导下拉列表
- 将json数据动态加载到D3节点中
- 如何在 React 中将 html 表单元格数据动态插入到具有动态标题的表中
- 使用数据库返回的数据动态填充下拉列表
- 从 JSON 数据动态创建 Jquery 移动导航栏
- 将数据动态发送到服务器
- 如何通过角度 ui-grid 中来自$scope的数据动态设置指令
- 如何在 ASP.NET 中将数据动态追加到 JQuery 控件变量
- 用于流程图的 JavaScript 绘图库,并将数据动态附加到视图
- 使用Angular ng-repeat将数据动态加载到materializecss滑块中不起作用
- 在 Laravel 5.1 和 Vue JS 中保存多个数据动态表单
- 当没有提供json数据的结构/字段名称时,将json数据动态显示为表
- 如何使用entityframwork和sql数据动态显示jqgrid数据
- Javascript:如何从字符串数据动态构建方法
- Javascript:将数据动态添加到数组中
- Ember数据动态模型未加载到存储中
- 使用JSON URL数据动态填充HTML表