2016-12-08 4 views
0

テンプレートにランダムなプレースホルダテキストを入力するメカニズムが必要です。今のところ、私はちょうどフィルタが法案に合うと思った。したがって、私はこのような何かを書いた:テンプレートにlorem ipsumテキストを出力するためのangle-ish関数?

ここ
angular.module('web') 
.filter('lorem', function(){ 
    var json = [ 
    //..data 
    ]; 

    return function(_, ord) { 
    var index = Math.floor(Math.random() * 10); 
    console.log('Index1:', index); 
    if (index >= json.length) { 
     index = json.length - 1; 
    } 
    console.log('Index2:', index); 
    return json[index][ord]; 
    } 
}); 

は例ですがどのようにそのテンプレートで消費:

{{'' | lorem:'text1' }} 

Plunk:http://plnkr.co/edit/uL4AAYmmbWkC8ofQ00FO?p=preview

がこれを行うには良い方法はありますか?

答えて

1

これは可能です。それはよりダイナミックです。必要なテキストの数を<li>に指定できます。

index.htmlを

<li ng-repeat="i in FinalJson"> 
    {{ i }} 
    </li> 

app.js

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
    $scope.list = Array.apply(null, {length: 5}).map(Number.call, Number); 
    console.log($scope.list); 

    var json = [ 
    "ut commodo do", 
    "ad amet reprehenderit officia pariatur deserunt magna", 
    "pariatur culpa do", 
    "do tempor laboris adipisicing est aliquip deserunt cillum occaecat culpa eu irure", 
    "reprehenderit duis magna cillum veniam aute", 
    "veniam nisi labore", 
    "deserunt id nulla", 
    "amet amet laborum laboris enim", 
    "occaecat ullamco excepteur sit et", 
    "laborum ut id" 
    ]; 

    $scope.requiredText=5; 
    var requiredText=5; 
    var length = json.length; 
    $scope.FinalJson=[]; 

    for(i=0;i<length;i++){ 
    var index = Math.floor(Math.random() * length); 
    if($scope.FinalJson.indexOf(json[index])==-1){ 
     $scope.FinalJson.push(json[index]); 
    } 
    if($scope.FinalJson.length==$scope.requiredText){ 
    break; 
    } 
} 
}); 

このため、余分なフィルタを作成する必要はありません。これはうまくいくはずです。

+0

フィルタアプローチはよりグローバルです。コントローラーで何かする必要はありません。 – deostroll

+0

8または10のランダムな文章が必要な場合はどうなりますか? –

関連する問題