【发布时间】:2016-10-04 22:21:28
【问题描述】:
我想在我的 angularJS 应用程序上添加一个自定义过滤器。如果 ng-repat 中的对象将 isDeleted 标志设置为 true,我想要像 this way 这样的删除文本。
代码:这里是 HTML:
<table id="tableText" class="table table-hover table-striped" ng-init="allNews()">
<tr>
<th>Titolo</th>
<th>Text</th>
<th>Disattivato</th>
<th>Modifica</th>
<th ng-if="!cancelDelete">Elimina</th>
<th ng-if="cancelDelete">Annulla</th>
</tr>
<tr ng-repeat="news in allNews | filter: deleteTitleText(news)">
<td>
<div ng-hide="editingData[news.id]">{{ news.title }}</div>
<div ng-show="editingData[news.id]"><input type="text" class="form-control" ng-model="news.title" /></div>
</td>
<td>
<div ng-hide="editingData[news.id]">{{ news.arg }}</div>
<div ng-show="editingData[news.id]"><input type="text" class="form-control" ng-model="news.arg" /></div>
</td>
<td>
<div ng-hide="editingData[news.id]"><input type="checkbox" disabled ng-model="news.isDeleted"></div>
<div ng-show="editingData[news.id]"><input type="checkbox" ng-model="news.isDeleted"></div>
</td>
<td>
<div ng-hide="editingData[news.id]"><button id="modify" class="btn btn-primary" ng-click="modify(news, $event)">Modifica</button></div>
<div ng-show="editingData[news.id]"><button id="accept" class="btn btn-success" ng-click="update(news)">Accetta</button></div>
</td>
<td>
<div ng-hide="editingData[news.id]"><button id="delete" class="btn btn-danger" ng-click="delete(news.id)">Cancella</button></div>
<div ng-show="editingData[news.id]"><button id="cancel" class="btn btn-danger" ng-click="cancelModify()">Annulla</button></div>
</td>
</tr>
</table>
JS:
app.filter('deleteTitleText', function () {
return function (news) {
if (news.isDeleted == true) {
news.title = "<span><del>" + news.title + "</del></span>";
news.arg = "<span><del>" + news.arg + "</del></span>";
}
return news;
}
});
这是实现这种过滤器的好方法吗?现在我收到此错误:angular.js:13920 Error: [filter:notarray] Expected array but received: function ()。谢谢
【问题讨论】:
-
为什么需要过滤器,
<div ng-hide="editingData[news.id]">{{ news.title }}</div>将其替换为<div ng-hide="editingData[news.id]"><span ng-hide="news.isDeleted">{{ news.title }}</span><span ng-show="news.isDeleted"><del>{{ news.title }}</del></span></div>并删除过滤器应该也可以,或者您对使用过滤器有什么特殊要求
标签: angularjs