javascript - 如何创建一个过滤器,在生成的数组中的每个元素周围格式化 HTML 标记?
问题描述
我有一个包含用户输入值的数组。输入的数量以及元素的数量基于按钮单击,如下所示:
<input type="text" id="genTxt" placeholder="Enter an item" ng-model="genExpr.genArrays[$index]" ng-repeat="genArray in genExpr.genArrays track by $index">
<button ng-click="addTxtField()">Add item</button>
<button ng-click="removeTxtField()">Remove item</button>
使用相关的 Javascript:
var app = angular.module("outputApp", []);
app.controller("outputCtrl", function($scope) {
$scope.genExpr = { genArrays: [] };
$scope.addTxtField = function() {
$scope.genExpr.genArrays.push('');
}
$scope.removeTxtField = function() {
$scope.genExpr.genArrays.pop('');
}
});
我需要的是一个过滤器,它能够用 html 标签(例如 <li></li>)包装 genArrays 中的每个元素。到目前为止,我得到的最接近的是以下。
app.filter('liTag', function () {
return function (items) {
return "<li>" + items + "</li>"
};
});
即使数组为空并且围绕整个数组,它也会创建标签。
<ul><li>test,test,test,test</li></ul>
相反,目标应该是这个。
<ul><li>test</li><li>test</li><li>test</li><li>test</li></ul>
我的其他尝试都失败了,包括过滤器有条件并在数组为空时返回“”的尝试。
我把它全部放在 plunker 中以便于查看。
解决方案
您需要简单地遍历数组中的各个元素并li
像这样添加标签。
var app = angular.module("outputApp", []);
app.controller("outputCtrl", function($scope) {
$scope.genExpr = {
genArrays: []
};
$scope.addTxtField = function() {
$scope.genExpr.genArrays.push('');
}
$scope.removeTxtField = function() {
$scope.genExpr.genArrays.pop('');
}
});
app.filter('liTag', function() {
return function(items) {
var result = ""
for (var item of items) {
result += "<li>" + item + "</li>";
}
return result
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="outputApp" ng-controller="outputCtrl">
<input type="text" id="genTxt" placeholder="Enter an item" ng-model="genExpr.genArrays[$index]" ng-repeat="genArray in genExpr.genArrays track by $index">
<button ng-click="addTxtField()">Add item</button><button ng-click="removeTxtField()">Remove item</button>
<textarea id="output"><ul>{{ genExpr.genArrays | liTag }}</ul></textarea>
</div>
推荐阅读
- ios - 在哪里编写强制 iPhone 用户在其 iPhone 中更新 iOS 应用程序的代码?
- python - 文森蒂距离系列
- javascript - javascript:恢复div的背景颜色
- c - 将文件映射到内存后读取文件
- odoo-10 - ODOO 中的验证错误
- iphone - 解锁 iPhone 设备以继续?
- javascript - 数据表第一页后无法在模式中设置值
- amazon-web-services - AWS - 用户类型以及他们如何承担 IAM 角色
- android - EditText 使用 androidx 支持来自 IME 的 gif 图像 - onCommitContent 从未调用过
- javascript - 期望单值但多值