1

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

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

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

<signupprogress available="{{course.available_seats}}" filled="{{course.filled_seats}}"></signupprogress>

我的问题是(首先也是最重要的)一个指令是否是执行此操作的正确方法,以及因此,构建进度条的逻辑是否应该进入编译函数、链接函数、模板或其他地方. 对我来说,链接函数的编译似乎是最正确的,但我不想用 HTML 填充它们,我也无法从 HTML 中正确获取属性值(我只见过 attrs.$observe 示例实现一个属性的获取)。

4

2 回答 2

1

在我看来,该指令是要走的路。我会将我的 HTML 内容包含在模板中,将逻辑包含在链接函数中(编译函数通常更多地用于转发器等)。并在指令定义中使用“范围”属性,设置为“=”,这样更改会自动反映。

于 2013-02-02T13:49:38.100 回答
1

是的,使用指令,因为您需要修改 DOM。

如果进度条的所有 HTML 和替代文本都可以放在指令的模板中,那么就这样做。并且,如果可能的话,使用 '@' 进行单向绑定,这清楚地表明该指令不需要修改“可用”和“填充”值。如果您发现需要链接功能,那么正如@ShaiRez 提到的,'=' 可能更容易。(顺便说一句,这是一种$watch 多个属性的方法,而不是使用 $observe。也许可以对 $observe 使用相同的技术。)

要在模板中显示进度条或替代文本,请在模板中使用 ng-hide 或 ng-show。这是一个简单的例子(也使用'@')。

于 2013-02-02T19:52:00.957 回答