【问题标题】:AngularDART Event Handling when option is selected from dropdown menu从下拉菜单中选择选项时的 AngularDART 事件处理
【发布时间】:2015-11-10 21:58:41
【问题描述】:

我有一个简单的选择语句,我想在其中读取选定的值,并在选择更改时将其发送到控制器中的函数,我能够读取索引并能够在选择中显示/读取它,但 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');
}

谁能帮帮我。

谢谢

【问题讨论】:

    标签: select dart angular-dart


    【解决方案1】:

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

    您看到的是 ng-value 是事件上下文中未定义变量的结果。在这个 sn-p 中根本没有定义 ng-value 变量。指令 ng-value 没有定义变量。

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

    【讨论】:

    • 谢谢你的提示,我试试看。
    【解决方案2】:

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

    1. 需要使用ng-model
    2. 需要使用value(不是ng-value)
    3. 需要用到FUTURE,幸好这个answer帮了我
    4. {{$index}} 是String,不是整数,所以需要在函数中转换成整数才能将其作为整数处理,使用int.parse()

    所以,我的工作代码是: 在 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;
       }
       });
      }
    

    以上方法对我来说很完美,这是完美的方法,还是一种解决方法!

    任何想法!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      相关资源
      最近更新 更多