2016-12-08 31 views
0

我想要一些機制在我的模板中輸入隨機佔位符文本。現在我只是想過濾器適合這個法案。因此,我寫了這樣的事情:angular-ish函數在模板中輸出lorem ipsum文本?

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' }} 

普拉克: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個隨機句子怎麼辦? –