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

标签 attributes dart angular-dart

第3章AngularDart tutorial定义了 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')")在组件的 maxRating() 顶部setter body(见下文),然后在运行应用程序时,我得到以下输出:
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);
  }

最佳答案

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

绑定(bind)机制调用 setter 和 getter 以稳定值,因为某些值可能相互依赖,并且机制通过多次设置和获取值来“蛮力”这一点(默认情况下为 7,IIRC)。

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

相关文章:

dart - 如何在 angular.dart 中装饰组件

Python 和类属性声明

class - 获取所有类属性。如何?

html - HTML 标签属性有 ORDER

angular - 学习有 Angular Dart 并使用有 Angular 画廊部分库

dart - 将dart升级到2.7时,webdev中出现错误

javascript - 使用 attr 更改 img 源不适用于 ios5

flutter - 如何使用 Flutter 中的 Provider 增加电子商务购物车中的商品数量

flutter - IndexedStack小部件未更新

html - 是否可以在没有 Html 的情况下创建 Polymer 元素?