0

情况如下:我的实体具有许多不同的属性:标量、数组、对其他实体的引用等。每种属性类型可以根据操作(创建、编辑属性定义、编辑属性值、视图)以不同方式显示。每个属性都被实体平等对待,通常通过迭代属性数组和创建通用属性指令来呈现。

property 指令检查链接函数中的属性类型和所需的操作,获取适当的模板并编译它。这是一些伪代码:

myModule.directives('property', function() {
  return function(scope, element, attributes) {
    var template = fetchTemplate(scope.propertyType, attributes.action);
    element.html($compile(template)(scope));
  }
}

我应该把控制器逻辑放在哪里?目前,我为模板中的每个属性定义了一个专用控制器,ng-controller并将该控制器放入应用程序的控制器文件中。然而,我觉得逻辑应该进入指令本身。这里有一个问题:我不能使用指令的控制器功能,因为那时模板还没有准备好。我应该在获取模板的同一个链接函数中处理不同属性类型的所有逻辑吗?或者我应该为每个属性定义指令,然后在属性模板中声明这些指令?(这似乎根本不正确,因为指令加载了一个模板,该模板声明了另一个指令来执行控制器的工作)。

使用动态模板实现这一目标的角度方式是什么?

4

0 回答 0