ngClass无法正确呈现

姆泽雷巴

我正在加载待办事项列表,每个待办事项都有一个标志字段,如果为true,ng-class则应适用。ng-class如果使用ng-class="{'completed': todo.isCompleted=='true'}",则将数据加载到页面中时适用,但是当我使用复选框时,它将不起作用。

另一方面,如果我ng-class="{'completed': todo.isCompleted==true}"改用(在上没有引号true),则它会ng-class在开始时不应用来加载数据,这意味着要加载所有数据,就好像它们是假的一样,但是在使用复选框时,它可以很好地工作。

它让我发疯,不知道为什么。

<ul id="todo-list">
    <li ng-repeat="todo in todos" ng-class="{'completed': todo.isCompleted==true}" class="editing">
        <div class="view" >
            <input class="toggle" type="checkbox" ng-click="complete(todo)" ng-model="todo.isCompleted" ng-checked="{{todo.isCompleted}}">
            <label ng-hide="isEditing" ng-dblclick="isEditing = !isEditing">{{todo.title}}</label>
            <button class="destroy" ng-click="remove(todo)"></button>
        </div>
        <input class="edit" ng-show="isEditing" ng-model="todo.title" ng-blur="isEditing = !isEditing;edit(todo);">
    </li>
</ul>

控制器

$scope.complete = function(todo) {
    $scope.insertTodo(todo, UPDATE);
};

任何帮助表示赞赏。

费达金

因此,看起来您的服务器正在将布尔值作为字符串返回,这就是为什么您的绑定不起作用的原因...

您可以更改服务器的返回值(preferred),也可以将ng-true-valueand添加ng-false-value到复选框中,并ng-class使用字符串比较保持绑定

<ul id="todo-list">
    <li ng-repeat="todo in todos" ng-class="{'completed': todo.isCompleted=='true'}" class="editing">
        <div class="view" >
            <input class="toggle" type="checkbox" ng-click="complete(todo)" ng-model="todo.isCompleted" ng-checked="{{todo.isCompleted}}" ng-true-value="'true'"  ng-false-value="'false'">
            <label ng-hide="isEditing" ng-dblclick="isEditing = !isEditing">{{todo.title}}</label>
            <button class="destroy" ng-click="remove(todo)"></button>
        </div>
        <input class="edit" ng-show="isEditing" ng-model="todo.title" ng-blur="isEditing = !isEditing;edit(todo);">
    </li>
</ul>

希望能有所帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章