我确实遵循了Angular JS TODO 示例并将我的代码发布在 JSFiddle 上(使用 AngularJS v1.0.3):http: //jsfiddle.net/7w689/
我无法弄清楚为什么它不能按预期在 IE9 中工作。它可以在 IE8、Chrome 和 Firefox 中运行,但在 IE9 中确实有不同的行为,如下所述。
在 IE8、Chrome 和 Firefox 中观察到的行为: 第一次加载页面时,单击 TODO 列表中的任何 TODO 复选框将修改 TODO 项的 CSS 类(.done-true 与 .done-false),并将更新“剩余待办事项”数量.
IE9 中观察到的行为: 第一次加载页面时,单击 TODO 列表中的任何 TODO 复选框将不会修改 TODO 项的 CSS 类(.done-true 与 .done-false),并且不会更新“剩余待办事项”编号。只有在列表中的每个项目被选中和取消选中多次后,它才会开始工作。不清楚为什么会发生这种情况以及如何使其在 IE9 中的行为与 IE8 和其他浏览器中的行为相同。
可以通过使用 IE9 中的开发工具并选择浏览器模式:IE9、文档模式:IE9 标准(相对于文档模式:IE8 标准)来重现此行为。
HTML:
<div ng-app>
<div ng-controller="TodoCtrl">
<span>Total number of todos: {{todos.length}}</span><br />
<span>Remaining todos: {{(todos | filter: {done: false} ).length}}</span><br />
<ul>
<li ng-repeat="todo in todos">
<input type="checkbox" ng-model="todo.done" id="chk{{$index}}"/>
<label for="chk{{$index}}" ng-class="{'done-true': todo.done, 'done-false': !todo.done}">
{{todo.text}} | {{todo.done}}
</label>
</li>
</ul>
<form>
<input type="text" ng-model="todoText"
size="30" placeholder="add new todo here"/>
<button ng-click="addTodo()">Add</button>
</form>
</div>
</div>
JS:
function TodoCtrl($scope) {
$scope.todos = [
{ text: 'task 1', done: true },
{ text: 'task 2', done: false }
];
$scope.addTodo = function ()
{
$scope.todos.push({ text: $scope.todoText, done: false });
$scope.todoText = "";
};
}
CSS:
.done-true {text-decoration: line-through; color: grey;}
.done-false {text-decoration: none; color: red;}