0

我有一个待办事项列表,我希望当我单击“标记的标记”按钮时,所有选中的元素都会被标记。

这是我的代码 index.html

 <!DOCTYPE html>
<html>
<head>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
    <style>
        .strike {
    text-decoration: line-through;
        }
    </style>
</head>

<body ng-app="myApp" ng-controller="todoCtrl">
<h2>My Todo List</h2>

<div ng-repeat="x in todoList">
    <input type="checkbox" ng-model="x.done"><span  ng-class="" ng-bind="x.todoText"></span>
</div>

<p>

    <button ng-click="strike()">Strike marked</button>
</p>


<script src="myNoteCtrl.js"></script>
</body>
</html>

这是 myNoteCtrl.js

var app = angular.module('myApp', []); 
app.controller('todoCtrl', function($scope) {
    $scope.todoList = [{todoText:'Clean House', done:false},{todoText:'Clean House2', done:false}];



        $scope.strike = function() {
        var oldList = $scope.todoList;
        angular.forEach(oldList, function(x) {
            if (!x.done) x.todoText.class="strike";
        });
    };
});
4

2 回答 2

1

您不应该在任务class字符串上添加属性。todoText您应该改为striked向任务添加一个布尔属性:

$scope.strike = function() {
    angular.forEach($scope.todoList, function(x) {
        if (!x.done) x.striked = true;
    });
};

然后使用这个布尔值添加 css 类:

<span ng-class="{strike: x.striked}" ng-bind="x.todoText"></span>
于 2015-06-14T09:52:38.740 回答
1

您需要使用 ng-class 来实现相同的

ng-class="{isStriked : x.done}" 

代码

$scope.strike = function() {
    var oldList = $scope.todoList;
    angular.forEach(oldList, function(x) {
      x.isStriked = x.done;
    });
};

工作Plunkr

于 2015-06-14T09:52:39.160 回答