2013-03-27 43 views
27

我有以下HTMLAngularjs。我如何將變量作爲參數傳遞給自定義過濾器?

<span class="items-count">{{items | countmessage}}</span> 

而繼過濾器,以顯示正確的計數消息

app.filters 
    .filter('countmessage', function() { 
     return function (input) { 
      var result = input.length + ' item'; 
      if (input.length != 1) result += 's'; 
      return message; 
     } 
    }); 

但我想改用不同的詞「項目(S)」,所以我修改了過濾器

app.filters 
    .filter('countmessage', function() { 
     return function (input, itemType) { 
      var result = input.length + ' ' + itemType; 
      if (input.length != 1) result += 's'; 
      return message; 
     } 
    }); 

它適用於當我使用這樣的字符串時

<span class="items-count">{{items | countmessage:'car'}}</span> 

,但不從$作用域的變量的工作,是有可能使用$ scope變量

<span class="items-count">{{items | countmessage:itemtype}}</span> 

感謝

回答

35

是的,這是可以使用變量從$scope

一個例子來看看這個小提琴: http://jsfiddle.net/lopisan/Kx4Tq/

HTML:

<body ng-app="myApp"> 
    <div ng-controller="MyCtrl"> 
     <input ng-model="variable"/><br/> 
     Live output: {{variable | countmessage : type}}!<br/> 
      Output: {{1 | countmessage : type}}! 
    </div> 
</body> 

的JavaScript:

var myApp = angular.module('myApp',['myApp.filters']); 

function MyCtrl($scope) { 
    $scope.type = 'cat'; 
} 

angular.module('myApp.filters', []) 
    .filter('countmessage', function() { 
     return function (input, itemType) { 
      var result = input + ' ' + itemType; 
      if (input > 1) result += 's'; 
      return result; 
     } 
    }); 
+0

好,謝謝,我發現了,我剛剛錯過了當前作用域變量,現在的工作。 – IgorCh 2013-03-27 14:21:10

+1

我們可以通過用戶輸入動態地生成$ scope.type嗎?如:''? – Clev3r 2013-09-12 19:49:21

+0

@Clever:是的,只需將''添加到小提琴的HTML部分即可。 – lopisan 2013-09-13 09:34:07

相關問題