2016-04-06 16 views
1

Kodumda, bir dizedeki her harfe bir dizede bir harfin konumuna göre bir sayı eklemek istiyorum. Çıktının "someString" gibi bir dizgiye benzemesini istiyorum, s1o2m3e4S5t6r7i8n9g10 ve şimdi birazString10 alıyorum. BuradaBir dizgideki her harf için bir sayı ekleme

JSfiddle: Bu benim HTML https://jsfiddle.net/tq0p6y74/

:

<div ng-controller="mainController"> 
    <div> 
    <label>Your string? 
    </label> 
    <input type="text" ng-model="someString" /> 
    </div> 
    <!--this calls the function and a variable--> 
    <h3>twitter.com/{{ lowercase() }}</h3> 
    <h3>twitter.com/{{ uppercase() }}</h3> 
    <h3>twitter.com/{{ string }}</h3> 
    <h3>twitter.com/{{ addNumToEachLetter() }}</h3> 
</div> 

Ve bu denetleyici geçerli:

myApp.controller('mainController', ['$scope', '$filter', function($scope, $filter) { 
    $scope.someString = ''; 
    $scope.uppercase = function() { 
    return $filter('uppercase')($scope.someString); 
    }; 
    $scope.lowercase = function() { 
    return $filter('lowercase')($scope.someString); 
    }; 
    $scope.addNumToEachLetter = function() { 
    var numbered = $scope.someString + ($scope.someString.length); 
    if ($scope.handle.length == 0) 
     return ''; 
    else 
     return numbered; 
    }; 
}]); 
+2

Eğer sonucun ne olması gerektiği konusunda bir örnek yapabiliyor musunuz. Yani eğer stringim 'Marco'yduysa,' {{addNumToEachLetter()}} ' – KieranDotCo

+0

'da bir dizgeyle görmeyi beklerdin Marco çıktısı Marco5 olurdu – Marco

+0

@Marco Sorunuzdaki örnekle çakışıyor. Hangisini almak istiyorsun? –

cevap

3

Kendi filtre oluşturun:

myApp.filter('addNumToEachLetter', function(){ 
     return function(str){ 
     return str.split('').map(function(c, index){ return c + (index+1)}).join(''); 
     } 
    }) 

myApp.controller('mainController', ['$scope', '$filter', function($scope, $filter){ 
    $scope.someString = ''; 
    $scope.uppercase = function(){ 
     return $filter('uppercase')($scope.someString); 
    }, 
    $scope.lowercase = function(){ 
     return $filter('lowercase')($scope.someString); 
    }, 
    $scope.addNumToEachLetter = function(){ 
     return $filter('addNumToEachLetter')($scope.someString); 
    } 
}]); 
+0

Aradığım şey bu, teşekkür ederim! – Marco

3

Basitçe şöyle, Açısal ifadeler kullanmak:

<div ng-controller="mainController"> 
     <div> 
      <label>Your string? 
      </label> 
      <input type="text" ng-model="someString"/> 
     </div> <!--this calls the function and a variable--> 
     <h3>twitter.com/{{ someString | lowercase }}</h3> 
     <h3>twitter.com/{{ someString | uppercase }}</h3> 
     <h3>twitter.com/{{ string }}</h3> 
     <h3>twitter.com/{{ someString }}{{ someString.length ? someString.length : '' }}</h3> 
    </div> 

Bu tür ifade enterpolasyonları için denetleyicinizin içindeki işlevleri çağırmanız gerekmez.

+0

Sorguyu düzenledim, bu bana – Marco

+0

'dan önce aynı çıktıyı veriyor Marco @GonzaloPincheiraArancibia'nın yanıtını gör - Tam olarak bunu nasıl yapardım –

İlgili konular