AngularJS:在构建HTML小部件时,将哪些逻辑放在哪里
我对Angular.js非常(!)陌生,我正试图了解我的逻辑的各个部分应该放在哪里,以便遵循最佳实践,并将业务和表示逻辑分开 我的具体用例是,我有一个课程列表,其中有许多注册和一些可用座位。基于这些值,我想显示一个进度条(或者,如果没有设置可用座位,则只显示一个文本) 我的问题是将逻辑的各个部分放在哪里,以及如何正确地传递值。到目前为止,我已经创建了指令的HTML部分,如下所示:AngularJS:在构建HTML小部件时,将哪些逻辑放在哪里,angularjs,Angularjs,我对Angular.js非常(!)陌生,我正试图了解我的逻辑的各个部分应该放在哪里,以便遵循最佳实践,并将业务和表示逻辑分开 我的具体用例是,我有一个课程列表,其中有许多注册和一些可用座位。基于这些值,我想显示一个进度条(或者,如果没有设置可用座位,则只显示一个文本) 我的问题是将逻辑的各个部分放在哪里,以及如何正确地传递值。到目前为止,我已经创建了指令的HTML部分,如下所示: <signupprogress available="{{course.available_seats}}"
<signupprogress available="{{course.available_seats}}" filled="{{course.filled_seats}}"></signupprogress>
我的问题是(首先也是最重要的)指令是否是实现这一点的正确方法,当然,构建进度条的逻辑是否应该放在编译函数、链接函数、模板或其他地方。对我来说,link函数的编译似乎是最正确的,但我不想用HTML填充它们,也不能从HTML中正确地获取属性值(attrs.$observe示例我只看到了实现获取一个属性的功能)。我认为该指令是可行的。 我会将HTML内容放在模板中,链接函数中的逻辑(编译函数通常更适合于转发器等)。
并在指令定义中使用“scope”属性,设置为“=”,这样更改会自动反映出来。是的,因为您需要修改DOM,所以请使用指令 如果进度条的所有HTML和可选文本都可以放在指令的模板中,那么就这样做。如果可能的话,使用“@”进行单向绑定,这表明指令不需要修改“可用”和“填充”值。如果您发现需要一个链接函数,那么正如@ShaiRez所提到的,“=”可能更容易。(顺便说一句,这里有一种方法来代替$observe。也许同样的技术也可以用于$observe。)
要在模板中显示进度条或备选文本,请在模板中使用ng hide或ng show。下面是一个例子(它也使用“@”)。这是否意味着您要在HTML中执行if/else以显示进度条?您可以在指令的作用域上有一个属性,如“isVisible”,这取决于您的逻辑,然后将该属性绑定到模板主标记可见性。你所要做的就是监视所有其他重要的属性。