在angularJS中使用Substr来获取全名的首字母

时间:2016-10-28 03:07:20

标签: angularjs angularjs-directive

我的问题与在Angular.JS

中创建substr有关

假设我有一个模型:

$scope.myName = 'John Smith'

但是当在页面上呈现模型时,我只需要名称的首字母,如:

<p>{{myName | some directive/filter }}<p>

输出应该是:: JS

我尝试创建了许多指令但是无法获取确切的输出,即使我已经尝试过limitTo过滤器,但它只给出了名称的起始前2个字母。

this Java answer

3 个答案:

答案 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}}