Javascript 在jqxGrid中呈现AngularJS指令
使用jqxGrid生成包含数据的表(显然) 我已经在jqxGrid中加载了我的angular directive元素,数据可以很好地更新网格,但它只是停留在那里,没有渲染,我不知道如何触发渲染 以下是我的jqx设置:Javascript 在jqxGrid中呈现AngularJS指令,javascript,angularjs,jqxgrid,jqwidget,Javascript,Angularjs,Jqxgrid,Jqwidget,使用jqxGrid生成包含数据的表(显然) 我已经在jqxGrid中加载了我的angular directive元素,数据可以很好地更新网格,但它只是停留在那里,没有渲染,我不知道如何触发渲染 以下是我的jqx设置: AppvisAgentsCtrl.settings = { autowidth: true, ... columns: [ { text: 'A', cellsrenderer: insertActio
AppvisAgentsCtrl.settings = {
autowidth: true,
...
columns: [
{ text: 'A', cellsrenderer: insertActionMenu, width: 50 },
...
]
}
其中insertActionMenu就是这样:
function insertActionMenu(){
var output = [
'<actionmenu></actionmenu>'
].join('');
return output;
}
函数插入操作菜单(){
变量输出=[
''
].加入(“”);
返回输出;
}
我的问题是,在DOM检查器中,我只会看到
位于页面的每一列,我想告诉它呈现为它应该是的指令
是的,actionmenu指令有效,我在整个应用程序中多次使用它
编辑
一切都在jqx网格指令内:
<jqx-grid
jqx-settings="appvisagents.settings"
jqx-source="appvisagents.testData.things">
</jqx-grid>
假设这是在指令中发生的,您需要编译”好的,所以我发现唯一可行的方法是在设置中使用“呈现”事件和$compile my actionmenus逐个编译
不幸的是,我无法在注入之前对其进行$compile,因为jqx gid只会注入文本和HTML,任何附加对象的尝试都会导致附加[object object]
AppvisAgentsCtrl.settings = {
autowidth: true,
...
columns: [
{ text: 'A', cellsrenderer: insertActionMenu, width: 50 },
...
],
rendered: function(){
$element.find('actionmenu').each(function(i,e){
$compile(e)($scope);
});
}
}
对我来说,这不是一个好的解决方案,原因如下:
- 尽管为这个任务强制使用jqwidgets,但我还是想避免
尽可能多地使用jQuery
- 我不知道这会有什么影响
性能超过数千行
- 我仍然需要修改以将该指令绑定到与行对应的数据模型
但是我确实让它呈现了。你是说在指令的compile函数中还是在insertActionMenu()中?$compile服务只能在指令中使用,你需要在函数中添加actionMenu指令进行编译,这样angular就知道它需要用真正的指令dom来替换它。我意识到在您的情况下,代码可能不在jqxgrid指令中,所以我不确定您是否可以这样做。也许可以试试这个:你找到更好的解决方案了吗?