在angular.dart中使用select指令的正确方法是什么

时间:2013-11-09 11:17:32

标签: dart angular-dart

我使用基本的CRUD操作扩展了angular.dart.tutorial。因此,在新的edit_recipe_component.html中,我需要为食谱类别添加某种选择输入。

目前我有

<select ng-model="ctrl.recipe.category">
   <option ng-repeat="c in ctrl.categories" value="{{c}}">{{c}}</option></select>

表面上效果非常好:我可以从列表中选择类别,选择的类别成功存储在模型中,等等。 但是我在调​​试控制台中遇到了这些错误:

NoSuchMethodError : method not found: 'ngValue'
Receiver: null
Arguments: []

STACKTRACE:
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:42)
#1      _SingleSelectMode.onModelChange.<anonymous closure> (package:angular/directive/input_select.dart:185:78)
#2      _SelectMode._forEachOption (package:angular/directive/input_select.dart:146:24)
#3      _SingleSelectMode.onModelChange (package:angular/directive/input_select.dart:183:19)

我做错了什么?

不幸的是APIDOCS to InputSelectDirective没有使用部分

更新:我已根据第6章示例创建了github项目,其中重现了问题  它在这里:https://github.com/vadimtsushko/angular_tutorial_chapter_06

某些调试显示,“编辑”表单中的设置类别可立即成功运行(我已在“食谱”列表视图中添加了类别以进行调试)。 离开编辑表单时出错。

2 个答案:

答案 0 :(得分:4)

我认为这个问题已经修复了一段时间(因此不需要补丁),但无论如何,你也可以使用ng-value

<select ng-model="ctrl.recipe.category">
   <option ng-repeat="c in ctrl.categories" ng-value="c">{{c}}</option></select>

答案 1 :(得分:2)

input_select.dart

中的_SingleSelectMode课程上做一点补丁
onModelChange(value) {
    var found = false;
    _forEachOption((option, i) {
      if (option == _unknownOption) return;
      if (expando[option] == null ) return;
      var selected = value == null ? option == _nullOption : expando[option].ngValue == value;
      found = found || selected;
      option.selected = selected;
    });