AngularJS最佳的动态加载数据的方法

14 浏览
0 Comments

AngularJS最佳的动态加载数据的方法

在我的AngularJS应用程序中,我有一个标准的CRUD组件,用于管理大部分系统实体。这个组件(一个指令)基本上是一个表格,它接收其列元数据(JSON)并装饰表格。我的系统中有几个屏幕使用这个指令作为模板,它们之间唯一的区别是根据实体名称传递给它的列元数据数组。只是为了举例,上面是到达这个屏幕的路由。注意,一个单独的控制器处理所有“基本”实体,并且它获得的所有信息都是实体名称。

我的问题是关于实际上将列元数据数组检索到BasicCrudController的服务,根据实体名称(这个名称就像它的唯一标识符)。由于有多个实体使用这个模板,我不想将所有实体的列信息都保存在一个包含巨大的switch语句的单个文件中(如上所示)。我希望能够为某些实体延迟加载这些信息,以加快系统的启动速度。

然而,一些列定义在实体之间是共享的,所以最好的解决方案是能够“扩展”返回的列或以某种方式重用一组列。最终,最好的解决方案将是这样的:

function MostBasicService() {
    this.getColumns = function(entityName) {
        return [column1JSON, column2JSON, ...];
    }
}
/* 特定于Foo实体。只有在需要时才加载。 */
function FooService() {
    this.getColumns = function(entityName) {
        return MostBasicService.getColumns(entityName)
                .concat(columnFoo1, columnFoo2, ...);
    }
}
/* 特定于Foo2实体。只有在需要时才加载。 */
function Foo2Service() {
    this.getColumns = ...
}

总之,我想知道使用AngularJS实现这些服务的最佳方法,甚至是否应该将它们作为服务。谢谢。

0