0

我用基本的 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)

我做错了什么?

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

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

一些调试表明在编辑表单中设置类别可以立即成功地工作(我在食谱列表视图中添加了类别以进行调试)。当我离开编辑表单时出现错误。

4

2 回答 2

4

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

<select ng-model="ctrl.recipe.category">
   <option ng-repeat="c in ctrl.categories" ng-value="c">{{c}}</option></select>
于 2014-04-01T18:14:12.447 回答
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;
    });
于 2013-12-15T03:18:43.040 回答