首页 文章

AngularDart如何创建组件

提问于
浏览
0

我刚刚开始学习本教程:https://github.com/angular/angular.dart.tutorial/wiki/Creating-a-Custom-Component

我只是遇到了一个问题,并寻求一些帮助 . 评级组件没有显示给我,没有一个方法被调用(至少不在任何断点) . 在这里你可以看到代码:https://www.dropbox.com/s/oizzl9k6nclgoqd/SecondAngularDart.zip

请帮我一些指导,我该如何调试这样的情况?或者问题是什么?

@NgComponent(
  selector:'rating',
  templateUrl:'rating_component.html',
  cssUrl:'rating_component.css',
  publishAs:'cmp'
)
class RatingComponent {
  static const String _starOnChar = "\u2605";
  static const String _starOffChar = "\u2606";
  static const String _starOnClass = "star-on";
  static const String _starOffClass = "star-off";

  List<int> stars = [];

  @NgTwoWay('rating')
  int rating;

  @NgAttr('max-rating')
  int maxRating(String max) {
    stars = [];
    var count = max == null ? 5 : int.parse(max);
    for(var i=1; i <= count; i++) {
      stars.add(i);
    }
  }

  String starClass(int star) {
    return star > rating ? _starOffClass : _starOnClass;
  }

  String starChar(int star) {
    return star > rating ? _starOffChar : _starOnChar;
  }

  void handleClick(int star) {
    if (star == 1 && rating == 1) {
      rating = 0;
    } else {
      rating = star;
    }
  }
}

2 回答

  • 1

    好吧,这是一个初学者的错误,但我用这种方式使用了组件:

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

    但应该这样使用:

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

    您已使用@NgAttr('max-rating')注释了一个函数 . 这些数据绑定注释仅适用于字段或setter:

    @NgAttr('max-rating')
    set maxRating(String max) {
      stars = [];
      var count = max == null ? 5 : int.parse(max);
      for(var i=1; i <= count; i++) {
        stars.add(i);
      }
    }
    

    此外,在starClass和starChar中,您可以访问 rating ,它可以为null:

    String starClass(int star) {
      if (rating != null) {
        return star > rating ? _starOffClass : _starOnClass;
      }
    }
    

相关问题