0

我使用listnav插件jQuery listnav來過濾我的數據結果。我創建了一個調用listnav()方法的指令。使用AngularJS重新綁定listnav插件

當我再次將ng-repeat與新結果(示例中的字母A)綁定時,該插件會創建另一個導航欄。

請,看看我的樣品中http://codepen.io/anon/pen/XbwVWZ?editors=101

<div style="height: 50px"></div> 

<div ng-app="myApp" ng-controller="MyCtrl">   
    <input type="button" ng-click="send()" value="Load letter A"></input> 
    <hr>  
    <ul id="demoOne" class="demo" listnav> 
     <li ng-repeat="i in items" ng-bind="i.name"></li> 
    </ul> 

</div> 

$(function(){ 
//$('#demoOne').listnav(); 

$('.demo a').click(function(e) { 
    e.preventDefault(); 
}); 
}); 

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

myApp.controller('MyCtrl', MyCtrl); 

function MyCtrl($scope) { 
    var m = [ 
     {name: "411 Services"}, 
     {name: "Accountants"}, 
     {name: "Acupuncture"}, 
     {name: "Human Resource Consultants"}, 
     {name: "Importers"}, 
     {name: "Industrial - Equipment &amp; Supplies (Wholesale)"}, 
     {name: "Investments"}, 
     {name: "Janitor Service"}, 
     {name: "Jewelers (Wholesale)"}, 
     {name: "Jewelers - Retail"}, 
     {name: "Restaurants - Barbecue"}, 
     {name: "Roofing - Materials"}, 
     {name: "Roofing - Service Consultants"}, 
     {name: "Sand &amp; Gravel (Wholesale)"}, 
     {name: "School Supplies (Wholesale)"}, 
     {name: "Schools &amp; Educational Services"}, 
     {name: "Schools - Nursery &amp; Kindergarten Academic"}, 
     {name: "Vacuum Cleaners - Household - Dealers"}, 
     {name: "Vending Machines"}, 
     {name: "Ventilating Systems - Cleaning"}, 
     {name: "Wallpapers &amp; Wallcoverings - Installation"}, 
     {name: "Yoga Instruction"}, 
     {name: "Youth Organizations &amp; Centers"}, 
     {name: "Zilch"} 
    ]; 

    $scope.items = m; 

    $scope.send = function(){ 
     var n = [    
      {name: "Accountants"}, 
      {name: "Acupuncture"} 
     ];    

     $scope.items = n; 
     $scope.loadNav(); 
    }; 
} 

myApp.directive('listnav', function($timeout){ 
    return { 
     restrict: 'A', 
     replace: false, 
     link: function($scope, elem, attrs){    

      $scope.loadNav = function(){ 
       $timeout(function(){ 
        $(elem).listnav(); 
       }); 
      }; 

      $scope.loadNav(); 
     } 
    }; 
}); 

回答

1

你對你的呼叫send()再次調用您的loadNav()功能。

$scope.send = function(){ 
    var n = [    
     {name: "Accountants"}, 
     {name: "Acupuncture"} 
    ];    

    $scope.items = n; 
    //$scope.loadNav(); // this change 
}; 

Codepen update

編輯基於評論

你可以刪除以前的一個;

$scope.send = function(){ 
    var n = [    
     {name: "Accountants"}, 
     {name: "Acupuncture"} 
    ];    

    $scope.items = n; 
    $(".listNav").remove(); // added this 
    $scope.loadNav(); 
}; 

Codepen update

+0

這樣吧不更新,並不斷顯示錯誤的數量和highligth字母。 –

+0

增加了另一個編輯 –

+0

幾乎在那裏!字母N計算「沒有匹配的條目」,選項「全部」增加每次點擊。我正在尋找修復程序。感謝.remove()的想法。 –