2015-05-22 3 views
2

Я использую Lodash - angularJS.AngularJS - Lodash html капитализировать использование

_.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. Как я могу использовать?

+1

Вы должны обновить свой вопрос, укажите ваши требования, которые вы хотите использовать первый 'translate' фильтр, а затем сделать' _.capitalize() 'на нем – kachhalimbu

+0

@kachhalimbu Я обновил вопрос –

+0

вы видели мой ответ ниже? – kachhalimbu

ответ

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

+1

Спасибо за ваш ответ @Jeetendra Chauhan. Можем ли мы обойтись без фильтра? –

+0

@Donthamsettivbhadrarao use _ в фильтре - лучшее решение! – manzapanza

0

Довольно смутный вопрос. Если я понимаю, то вы хотите отобразить выше в html, используя привязку данных Angular, т.е. привяжите переменную к вашему элементу 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> 
+1

Спасибо за ваш ответ @Devan Accountero. Любой фильтр доступен непосредственно для нас, чтобы сделать это из html? –

0

Я не рекомендую вам сделать это, вы должны передать значение результата в Вашей области, но если вам это нужно просто добавить в свой Lodash $ рамки, как это:

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

+0

Спасибо за ответ Германдо. Я хотел использовать это с переводчиком. {{_.capitalize ('angularjs' | translate)}} не работает для меня. Как я могу использовать? –

+0

Попробуйте это {{_.capitalize ('angularjs') | translate}} – Germando

+0

Мне нужно сделать перевод сначала Germando –

0

Вот полное решение

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

+0

Спасибо за ваш ответ @kachhalimbu. Если это {{'angularjs' | прописные буквы | translate}}, сначала какой фильтр будет выполняться? Есть ли преимущество влево/вправо. –

+0

Он будет слева направо, т. Е.сначала заглавную, то результат будет передан для перевода – kachhalimbu

+0

обновил мой ответ, чтобы решить вашу проблему, указанную вами в другом комментарии. – kachhalimbu

Смежные вопросы