我正在加载待办事项列表,每个待办事项都有一个标志字段,如果为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-value
and添加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] 删除。
我来说两句