AngularDart tutorial的第3章定义了rating @NgComponent(请参见下面的摘录),该格式用于index.html中,如下所示:

<rating max-rating="5" rating="ctrl.selectedRecipe.rating"></rating>

在该章中,还建议可以通过max-rating设置@NgAttr {{...}},如下所示:

<rating max-rating="{{ctrl.max}}" rating="ctrl.selectedRecipe.rating"></rating>

RecipeController中,我简单地声明了:

 int max = 5;

如果我在组件的print("maxRating('$value')") setter主体顶部添加maxRating()(请参见下文),则在运行该应用程序时,我将获得以下输出:
maxRating('')  // printed 7 times
maxRating('5') // printed 7 times

问题:为什么该值最初为空? 我认为这是因为尚未完成内插操作,但是为什么在值“就绪”之前根本不调用设置方法?
RatingComponent类定义的摘录:

@NgComponent(
selector: 'rating', ...
publishAs: 'cmp'
)
class RatingComponent {
  ...

  @NgTwoWay('rating')
  int rating;

  @NgAttr('max-rating')
  set maxRating(String value) {
    var count = value == null ? 5 : int.parse(value);
    stars = new List.generate(count, (i) => i+1);
  }

最佳答案

据我所知,角 Dart 很渴望应用值(value)。只要angular运行,它就会开始应用值,我想提供一种响应感。
我也为此感到痛苦,不得不为尚未初始化的值编写多个解决方法。

绑定(bind)机制调用setter和getter来稳定值,因为某些值可能相互依赖,而机制只是通过多次设置和获取值(默认值为7,IIRC)来“强力作用”。

关于attributes - 当AngularDart中包含mustache指令时,NgAttr值最初为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21650758/

10-12 06:22