在AngularDart中包含mustache指令时,NgAttr值最初为空

时间:2014-02-08 19:25:50

标签: attributes dart angular-dart

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

问题:为什么这个值最初是空的?我认为这是因为插值尚未完成,但是为什么在值为“之前”完全调用了setter就绪“吗


摘录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);
  }

1 个答案:

答案 0 :(得分:0)

据我所知,角镖非常渴望应用价值观。一旦角度运行,它就开始应用值,我想提供一种响应感。 我也被这种方式所困扰,不得不为尚未初始化的值编写多个解决方法。

通过绑定机制调用setter和getter来稳定值,因为某些值可能相互依赖,并且机制&#34;暴力&#34;这只需多次设置和获取值(默认情况下为7,IIRC)。