我的问题与在Angular.JS
中创建substr有关假设我有一个模型:
$scope.myName = 'John Smith'
但是当在页面上呈现模型时,我只需要名称的首字母,如:
<p>{{myName | some directive/filter }}<p>
输出应该是:: JS
我尝试创建了许多指令但是无法获取确切的输出,即使我已经尝试过limitTo过滤器,但它只给出了名称的起始前2个字母。
答案 0 :(得分:0)
angular
.module('myApp',[])
.run(function($rootScope){
$rootScope.title = 'myTest Page';
})
.controller('testController', ['$scope', function($scope){
$scope.myName = 'saurabh raman';
}]).filter('filter', function() {
return function(input) {
var name = input;
var inls = name.match(/\b\w/g) || [];
inls = ((inls.shift() || '') + (inls.pop() || '')).toUpperCase();
return inls;
}
});
视图
<p>{{myName | filter}}</p>
</body>
</html>
答案 1 :(得分:0)
假设名称标记由 SPACE 分隔,如问题中所示
<body>
<div ng-app="myApp" ng-controller="namesCtrl">
<label>Name : {{name}}</label><br/>
<label>Short Name : {{name|shortName}}</label>
</div>
<script>
var app = angular.module('myApp', []);
app.filter('shortName', function() {
return function(x) {
var shortName="", nameTokens=[];
nameTokens = x.split(" ");
nameTokens.forEach(function(token){ shortName+=token[0] });
return shortName;
};
});
app.controller('namesCtrl', function($scope) {
$scope.name = 'John Smith';
});
</script>
</body>
答案 2 :(得分:0)
我希望有一个内置的过滤器,但似乎没有,所以我创建了这个过滤器:
var relConclusaoApp = angular.module("relatorioConclusaoApp", []);
relConclusaoApp.filter('onlyinitials', [function () {
return function (input) {
if (input) {
return input
.split(/\s+/)
.filter(s => s.length > 2)
.map(s => s.charAt(0).toLocaleUpperCase())
.join(".")
.concat(".")
}
return input;
}
}])
此过滤器会将 Floor Jansen 转换为 F.J。(例如) 它应在您的模板中用作:
{{nameToBeTransformed | onlyinitials}}