0

ToDo リストがあり、[Strike mark] ボタンをクリックすると、チェックされたすべての要素が打たれるようにしたいと考えています。

これは私のコード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;
    });
};

働くプランカー

于 2015-06-14T09:52:39.160 に答える