Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS:在构建HTML小部件时,将哪些逻辑放在哪里_Angularjs - Fatal编程技术网

AngularJS:在构建HTML小部件时,将哪些逻辑放在哪里

AngularJS:在构建HTML小部件时,将哪些逻辑放在哪里,angularjs,Angularjs,我对Angular.js非常(!)陌生,我正试图了解我的逻辑的各个部分应该放在哪里,以便遵循最佳实践,并将业务和表示逻辑分开 我的具体用例是,我有一个课程列表,其中有许多注册和一些可用座位。基于这些值,我想显示一个进度条(或者,如果没有设置可用座位,则只显示一个文本) 我的问题是将逻辑的各个部分放在哪里,以及如何正确地传递值。到目前为止,我已经创建了指令的HTML部分,如下所示: <signupprogress available="{{course.available_seats}}"

我对Angular.js非常(!)陌生,我正试图了解我的逻辑的各个部分应该放在哪里,以便遵循最佳实践,并将业务和表示逻辑分开

我的具体用例是,我有一个课程列表,其中有许多注册和一些可用座位。基于这些值,我想显示一个进度条(或者,如果没有设置可用座位,则只显示一个文本)

我的问题是将逻辑的各个部分放在哪里,以及如何正确地传递值。到目前为止,我已经创建了指令的HTML部分,如下所示:

<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”,这取决于您的逻辑,然后将该属性绑定到模板主标记可见性。你所要做的就是监视所有其他重要的属性。