【问题标题】:Why doesn't the model get updated?为什么模型没有更新?
【发布时间】:2014-04-02 22:23:01
【问题描述】:

我正在浏览 angular dart 教程,我尝试制作一个项目列表,当单击一个项目时,用单击项目的文本填充输入。在我修改输入中的文本之前,这可以正常工作。之后单击列表中的另一个项目不会更新输入字段中的文本(之前),也不会修改列表中的项目。

我的起点是 2 教程,但尝试将它与第一个教程中的一些输入结合起来。

我的html文件:

<!DOCTYPE html>
<html ng-app>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
  </head>

  <body>
    <div data-list>
      <ul>
        <li ng-repeat="data in ctrl.dataList" ng-click="ctrl.selectData(data)">{{data.text}}</li>
      </ul>
      <input type="text" value="{{ctrl.selected.text}}">
    </div>
    <script type="application/dart" src="spa.dart"></script>
    <script src="packages/browser/dart.js"></script>
  </body>
</html>

我的飞镖文件:

import 'package:angular/angular.dart';

@NgController(
  selector: '[data-list]',
  publishAs: 'ctrl'
)
class DataController{

  DataValue selected;
  List<DataValue> dataList = [new DataValue("uno"), new DataValue("dos"), new DataValue("tres")];

  void selectData(DataValue selected){
    this.selected = selected;
  }

}

class DataValue{

  @NgTwoWay('text')//Also tried without this. Same result
  String text;

  DataValue(this.text);
}

class DataAppModule extends Module{
  DataAppModule(){
    type(DataController);
  }
}

void main(){
  ngBootstrap(module: new DataAppModule());
}

知道我做错了什么吗?

期望的行为应该是:

  • 显示列表中的项目

  • 当其中任何一个被点击时,输入字段会更新

  • 在编辑输入字段的值时,列表中当前选定的项目将更新为新文本

  • 在任何时候单击项目都会更新输入文件的值

【问题讨论】:

    标签: dart angular-dart


    【解决方案1】:

    使用input 元素和ng-model 指令来进行双向绑定:

    ...
    <input type="text" ng-model="ctrl.selected.text">
    ...
    

    @NgTwoWay 注解只用在组件或控制器中,用在class DataValue 中被忽略。

    【讨论】:

    • 这对我不起作用。我收到一个错误,编辑说:Multiple annotations found at this line: - Expected to find ':' - Expected an identifier. 执行时会引发异常Bad state: Can not watch expression containing ';'. STACKTRACE: #0 ExpressionVisitor._notSupported (package:angular/core/scope.dart:978:5) #1 ExpressionVisitor.visitChain (package:angular/core/scope.dart:974:18)
    • 啊,原谅我,当我将 ng-model 的值放入小胡子时,我犯了一个错误。它必须是没有的,我更正了代码。
    • 没什么可原谅的。我也没有意识到这一点。无论如何,一个奇怪的 IDE 消息和异常。
    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2021-08-20
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多