AngularDart tutorial的第3章定义了@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;
如果我在组件的maxRating()setter主体(见下文)的顶部添加print(“maxRating(‘$value’)”),那么在运行应用程序时,我得到以下输出:
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); }