从下拉菜单中选择选项时的AngularDART事件处理

时间:2014-08-08 21:21:47

标签: select dart angular-dart

我有一个简单的select语句,我想读取所选的值,并在选择更改后将其发送到控制器中的函数,我能够读取索引并能够在select中显示/读取它,但是on-change功能继续向函数发送0:

我选择的HTML是:

<select ng-change="TodoCtrl.printit(ng-value)">
  <option ng-value=""></option>
  <option ng-repeat="todo in TodoCtrl.todos" ng-value={{$index}}>
    {{$index}} is {{todo.text}}
  </option>
</select>

并且控制器中的功能是:

void  printit(num i){
print('id selected is: $i');
}

任何人都可以请我来这里。

感谢

2 个答案:

答案 0 :(得分:1)

您可能应该使用模型而不是尝试处理更改事件。检查单元测试以获取示例代码。

您看到的是ng-value是事件上下文中未定义变量的结果。根据此代码段中没有定义ng-value变量。指令ng-value不定义变量。

ng-value指令用于指定任意值(即对象)作为选项值。在此代码中,选项值为纯字符串,应使用vanilla值属性。

答案 1 :(得分:1)

谢谢,我注意到以下内容:

  1. ng-modle需要使用
  2. 需要使用值(非ng值)
  3. 需要使用FUTURE,幸运的是answer帮助了我
  4. {{$ index}}是一个String,而不是一个整数,因此需要在函数中将其转换为整数,以便能够使用int.parse()
  5. 将其作为整数处理

    所以,我的工作代码是: 在HTML文件中:

    <select ng-change="TodoCtrl.printit()" ng-model="TodoCtrl.selectedIndex">
      <option ng-value=""></option>
      <option ng-repeat="todo in TodoCtrl.todos" value={{$index}}>
        {{$index}} is {{todo.text}}
      </option>
    </select>
    

    并且控制器中的功能是:

    void  printit(){   
     new Future(() { 
      selectedText=todos[int.parse(selectedIndex)].text;
      print('id with future selected is: $selectedIndex and the value is $selectedText');
      switch(int.parse(selectedIndex)){
        case 0:
          print('String 0');
          break;
        case 1:
          print('String 1');
          break;
        default:
          print('default');
          break;
       }
       });
      }
    

    以上与我完美配合,这是一个完美的方法,或者这是一种解决方法!!

    任何想法!