【发布时间】:2014-01-25 14:11:02
【问题描述】:
我正在尝试实现检查复选框列表中多个项目的功能。我正在使用地图来存储数据及其选择/未选择状态。
List<String> fruits = [
{'fruit': 'apple', 'selected': true},
{'fruit': 'banana', 'selected': true},
{'fruit': 'kiwi', 'selected': false}
];
复选框最初显示为正确呈现选中/未选中状态,但是当我切换复选框的选中状态时,fruits 映射不会更新。如何在此处正确创建双向绑定?
这是我的 .dart 文件:
import 'package:angular/angular.dart';
@NgDirective(
selector: '[my-controller]',
publishAs: 'ctrl'
)
class MyController {
List<String> fruits = [
{'fruit': 'apple', 'selected': true},
{'fruit': 'banana', 'selected': true},
{'fruit': 'kiwi', 'selected': false}
];
}
main() {
ngBootstrap(module: new Module()..type(MyController));
}
这是视图标记:
<!DOCTYPE html>
<html ng-app>
<body>
<div my-controller>
<ul>
<li ng-repeat="item in ctrl.fruits">
{{item['fruit']}}
<input type="checkbox" ng-model="item['selected']" />
</li>
</ul>
</div>
<!-- THIS DOES NOT UPDATE WHEN THE CHECKBOXES ARE TOGGLED -->
{{ctrl.fruits}}
<script type="application/dart" src="main.dart"></script>
<script type="text/javascript" src="packages/browser/dart.js"></script>
</body>
</html>
【问题讨论】:
-
一些附加数据:如果我将
<li>中的标记更改为{{item['fruit']}}-{{item['selected']}},切换复选框显然会更改selected字段。但是{{ctrl.fruits}}整个地图似乎没有更新。 -
我在打印地图的构造函数中添加了一个周期性计时器。更改复选框时,地图中的“选定”值会更新。只有
{{ctrl.fruits}}没有更新。
标签: angularjs dart angular-dart