Angolare Tradurre l’Uso con la Direttiva

Ecco violino link …. Sto cercando di aggiornare il contenuto della direttiva con $tradurre e utilizzare il controller. C’è qualche altro modo generico di fare la stessa cosa(link nella direttiva?? ) .Se voglio usare la stessa direttiva in un solo Controller, quindi questo approccio potrebbe non funzionare.
Praticamente come faccio a sbarazzarsi di controller ?

HTML

    <terms-conditions conditions="conditions" checked="checked"></terms-conditions>   <br>
    <button class="btn-primary" ng-disabled="!checked" >Submit</button>
      <hr>


</div>

    <div name="info" ng-controller="myCtrl2">
 <terms-conditions conditions="conditions" checked="checked"></terms-conditions>  <br>
       <button class="btn-primary" ng-disabled="!checked">Submit</button>
      <hr>

</div>
</div>

file js

var demo = angular.module('demo', ['pascalprecht.translate']);
demo.directive("termsConditions",function(){
return {
    restrict:"E",
    scope:{
        conditions:'=',
        checked:'='
    },
    template:
    "<div class='terms row'><span class='col-md-12'>{{conditions}}</span></div><br><input type='checkbox' ng-model='checked'><span>Yes, I agree to the terms and condtions</span>"
}

});
demo.config(function ($translateProvider) {
   $translateProvider.translations('en', {
        PRODUCT_NAME: 'NAME',
        TERMS_CONDITIONS:"TERMS & CONDITIONS",
        OTHER_TERMS_CONDITIONS: 'OTHER TERMS & CONDITIONS',
        AGREEMENT: 'Yes, I agree to the terms and condtions ',

    });

    $translateProvider.preferredLanguage('en');

})
demo.controller("myCtrl1", function ($scope, $translate) {
$translate('TERMS_CONDITIONS')
    .then(function (translatedValue) {
        $scope.conditions = translatedValue;
    });

})
demo.controller("myCtrl2", function ($scope, $translate) {
$translate('OTHER_TERMS_CONDITIONS')
    .then(function (translatedValue) {
        $scope.conditions = translatedValue;
    });

})

CSS

span {
font-weight:bold;
}
.terms{font-weight: normal;
width: 500px;
height: 50px;
overflow-y: scroll;
padding: 5px 5px 5px 5px;
border-style: solid;
border-color: #666666;
border-width: 1px;}
InformationsquelleAutor future | 2014-09-10



One Reply
  1. 2

    Non c’è alcun motivo non è possibile utilizzare il $tradurre provider direttiva. Solo iniettare come una dipendenza. Se si desidera ottenere rimuovere responsabilità dal controller di attivazione per la traduzione, è possibile utilizzare basta mettere quelli come attributi html.

    Esempio (non testato, ma questo è vicino a quello che dovrebbe funzionare):

    Html (generalizzare la direttiva semplicemente usare un attributo e utilizzare qualsiasi codice che si desidera per tradurre elemento)

    <div translated="TERMS_CONDITIONS">{{text}}</div>

    Direttiva (creare un nuovo campo di applicazione, utilizzare il traduci di servizio, e di associare a qualsiasi valore messo in tradotto attributo)

    demo.directive("translated",['$translate', '$scope', function($translate, $scope){
      return {
        restrict:"AEC",
        scope:true,
        link: function(scope, el, attr){
          $scope.text = '';
          $translate('TERMS_CONDITIONS')
            .then(function (translatedValue) {
              $scope.conditions = translatedValue;
            });          
        }
      }
    ]);
    • Grazie Papà 🙂 in realtà l’ho preso allo stesso modo. Mi dispiace dimenticate di allegare la soluzione qui.
    • Si prega di non dimenticare di segnalare la risposta accettata.

Lascia un commento