2015-10-14 69 views
0

在此琴:http://jsfiddle.net/CBgcP/742/如何在函數中傳遞過濾器操作的結果?

我試圖通過一個onclick到自定義過濾器的結果傳遞到範圍的功能:

<span ng-click="open(friend.name | custom)") 

此語法不正確。過濾操作的結果是否可以通過點擊進入功能?

小提琴源:

<div ng:app="myApp"> 
<div ng-controller="HelloCntl"> 
<ul> 
    <li ng-repeat="friend in friends | weDontLike:'Adam'"> 
     <span ng-click="open(friend.name | custom)")>{{friend.name}}</span> 
     <span>{{friend.phone}}</span> 
    </li> 
</ul> 
</div> 
</div> 


span 
{ 
width: 200px; 
} 


angular.module('myApp',[]).filter('weDontLike', function(){ 

    return function(items, name){ 

     var arrayToReturn = [];   
     for (var i=0; i<items.length; i++){ 
      if (items[i].name != name) { 
       arrayToReturn.push(items[i]); 
      } 
     } 

     return arrayToReturn; 
    }; 
}); 

angular.module('myApp', []).filter('custom', function() { 
    return function(input) { 
    return input.substring(0 , 2) 
    }; 
}); 

function HelloCntl($scope) { 

    $scope.open = function(){ 

     console.log('in open'); 
    } 


    $scope.friends = [ 
     { 
     name: 'John', 
     phone: '555-1276'}, 
    { 
     name: 'Mary', 
     phone: '800-BIG-MARY'}, 
    { 
     name: 'Mike', 
     phone: '555-4321'}, 
    { 
     name: 'Adam', 
     phone: '555-5678'}, 
    { 
     name: 'Julie', 
     phone: '555-8765'} 
    ]; 
} 
+0

不是100%肯定,但嘗試內聯語法''*你的元素中還有一個額外的'''''',需要刪除。 –

回答

1

您可以使用$filter服務要做到這一點:

function HelloCntl($scope, $filter) { 

    $scope.open = function(friend){ 

     console.log('in open with friend\'s name: ' + friend); 
     console.log('friend\'s name with filter applied: ' + $filter('custom')(friend); 
    } 
    // ... 
} 
+0

+,因爲你不應該放任何邏輯來查看(html)。 –

相關問題