【问题标题】:AngularJS - Lodash html capitalize usageAngularJS - Lodash html 大写使用
【发布时间】:2015-05-22 03:59:24
【问题描述】:

我正在使用 Lodash - angularJS。

_.capitalize('angularjs') from controller working for me.

Output:Angularjs

我正在使用翻译器。即,angularjs 从翻译加载

在主控制器中获取当前语言

var language = window.navigator.userLanguage || window.navigator.language;
$translate.use(language);

使用下面的配置函数

function configFunction($translateProvider) {
    $translateProvider
        .translations('en-US', {
            angularjs: "angularjs",
            java: "java"
        })
        .translations('en-UK', {
            angularjs: "angularjs",
            java: "java"
        });

    $translateProvider.preferredLanguage('en-US');
}

angular
    .module('angularjsApp')
    .config(configFunction)

我想从 html 中使用它。我该如何使用?

【问题讨论】:

  • 您应该更新您的问题以说明您希望首先使用translate 过滤器然后对其执行_.capitalize() 的要求
  • @kachhalimbu 我更新了问题
  • 你在下面看到我的回答了吗?

标签: html angularjs lodash


【解决方案1】:

像这样创建一个过滤器并在绑定中使用管道 (|)

(function() {
    'use strict';

    angular
        .module('common', [])
        .filter('capitalize', capitalize);

    capitalize.$inject = [];
    function capitalize() {
        return capitalizeFilter;

        ////////////////
        function capitalizeFilter(text) {
            return _.capitalize(text);
        };
    }

})();

在html中

<div>{{"angularjs" | capitalize}}</div>

Working DEMO

【讨论】:

  • 感谢您的回答@Jeetendra Chauhan。我们可以不用过滤器吗?
  • @Donthamsettivbhadrarao 在过滤器中使用 _ 是最好的解决方案!
【解决方案2】:

相当模糊的问题。如果我理解,那么您想使用 Angular 数据绑定在 html 中显示上述内容,即。将变量绑定到您的 html 元素并在该变量上运行 Lodash 方法。

<div ng-app="myApp" ng-controller="myCtrl">
    Somevar: <input type="text" ng-model="myVar">
</div>

<script>
    var app = angular.module('myApp', []);
    // load your Lodash module
    app.controller('myCtrl', function($scope) {
        // bind a dynamic variable to your html
        $scope.myVar = _.capitalize('angularjs');
    });
</script>

【讨论】:

  • 感谢您的回答@Devan Accountero。任何过滤器都可以直接供我们从 html 中使用吗?
【解决方案3】:

我不建议您这样做,您应该将结果值传递给您的范围,但如果您需要这样做,只需将 Lodash 添加到您的 $scope 中,如下所示:

// controller
$scope._ = _;
{{_.capitalize('angularjs') | translate}}

【讨论】:

  • 感谢您的回答 Germando。我想将它与翻译器一起使用。 {{_.capitalize('angularjs' | translate)}} 不适合我。如何使用?
  • 试试这个 {{_.capitalize('angularjs') |翻译}}
  • 您能否提供一些代码来说明您的翻译过滤器是如何设置的?
【解决方案4】:

这里有一个完整的解决方案

angular.module('app', ['pascalprecht.translate'])
.config(function ($translateProvider) {
   $translateProvider.translations('en', {
     Angularjs: 'angularjs'
   });
})
.constant('_', window._)
.filter('capitalizeIt', ['_', function(_) {
    return function(str) {
        return _.capitalize(str)
    }
}]);

现在在你的视野中

<h1>Hello {{'angularjs' | translate | capitalizeIt }}!</h1>

plnkr上完成工作演示

【讨论】:

  • 感谢您的回答@kachhalimbu。如果是 {{ 'angularjs' |大写 | translate}},首先执行哪个过滤器?是否有任何左/右优先级..
  • 它将从左到右,即首先大写,然后将其结果传递给翻译
  • 已更新我的答案以解决您在另一条评论中所述的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 2016-03-10
  • 2016-10-31
  • 2015-08-27
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
相关资源
最近更新 更多