我一直在探索Aurelia,到目前为止,我喜欢我所看到的。我遇到了一个问题,我不太确定如何解决。在我的当前应用程序中,我使用带有服务器端获取数据的angular和jquery datatables来处理大量结果。Datatables有一个函数,您可以在表中添加新行时调用它(fnRowCallback-http://legacy.datatables.net/ref#fnRowCallback或“createdRow”-https://datatables.net/examples/advanced_init/row_callback.html#)-这非常方便,因为您可以在每行之后重新编译dom(成本很高)。
这使您可以引用当前范围(或viewModel)中存在的函数,其中datatable位于其中。例如:
在我的视图模型中:
在从数据表提取的返回结果中:
我注入编译器服务后尝试了以下操作:
这使您可以引用当前范围(或viewModel)中存在的函数,其中datatable位于其中。例如:
在我的视图模型中:
export class DataTableTest{
test(){
alert('this is a test');
}
在从数据表提取的返回结果中:
{name:'blah',age:40,actions:"<a click.delegate='test();'>Test</a>"}
我似乎无法弄清楚如何在将元素添加到DOM后重新编译它,不知道有什么办法可以做到这一点吗?
有人有什么想法吗?
更新:这些是我传递给datatables的原始选项:
var options = {
"fnRowCallback": function (nRow) {
$compile($(nRow).contents())(scope);
}
};
我注入编译器服务后尝试了以下操作:
"fnRowCallback": function (nRow) {
this.compiler.compile($(nRow).contents()).fragment.innerHTML;
},
但是我总是会得到 Uncaught TypeError: Cannot read property 'compile' of undefined
错误 - 我将代码放在“attached”函数中。如果我在这些选项之外使用console.log(this.compiler),它是可用的。另外,我们不需要将HTML返回给datatables,只需对内容进行编译即可。非常感谢您的所有帮助!