我正在使用角度ui网格。起初我在控制器中实现了它,并且在我的所有自定义之后它工作正常。当我使用多个网格时,我不能每次都写一个长控制器。所以,我把它改成了工厂。我在工厂中保留了常用功能,并在控制器中保留了列定义和数据。现在,当我在多个控制器中使用此工厂时,最后一个控制器将覆盖所有其他控制器。 1)在工厂制作这个网格是否正确? 2)如果是,我该如何克服这个问题? 3)通过对这个网格使用工厂,我的gridObj.gridApi.pagination.on抛出错误(gridObj是我要返回的单个对象)。
欢迎任何建议。非常感谢。
答案 0 :(得分:0)
您应该使用指令。工厂创建一个Instant(请参阅Angular Provider Documentation并且不会创建私有范围,您无需覆盖您的数据。
注意:Angular中的所有服务都是单例。
但是,如果你想要的话,Directives提供私有范围并在每次用HTML调用时创建新的实例。
//directive
scope: { // this option creates isolated scopes
something : '=',
},
我创建了一个展示可能设置的Plunkr。有关更多书面详细信息,请参阅我的answer from few days ago。
之后您的HTML可能会如下所示
<my-grid options="all.firstOptions" class="grid"></my-grid>
my-grid
是您的指令,options=""
是您的特殊设置(以及您希望在指令中使用的任何其他设置)。在您的指令中,您声明默认设置并将其与特殊设置合并。
scope.gridOptions = {
data: scope.options.data, //private scoped from options : '=',
columnDefs: scope.options.colDef || defaultColDef, // optional setting or default setting
// ... some more default data
};
如果您有任何具体问题,请与我们联系。