2013-03-03 45 views
9

Cảm ơn trước sự giúp đỡ của bạn. Tôi đang sử dụng tagmanager trong ứng dụng web của mình. Chức năng jQuery hoạt động tốt cho đến nàythực hiện chức năng jQuery sau khi ng-repeat

<input type="text" name="tags" placeholder="Tags" class="tagsManager" /> 

Được đặt dưới

ng-repeat = "(key,val) in client_proj" 

Dưới đây là một đoạn ngắn của mã

<div class="accordion-group" ng-repeat="(key,val) in client_proj"><!--For Every Project in Project List--> 
    <div class="accordion-heading" style="background-color:#EFF8FB"> 
    <a class="accordion-toggle" data-toggle="collapse" data-parent="#mainAccordion" href="#{{val.id}}" ng-click="disableEditor()"> 
     <div align="center">{{val.title}}</div> 
    </a> 
    </div> 
    <div id="{{val.id}}" class="accordion-body collapse"> 
    <div class="accordion-inner" style="font-size:12px; background-color:white"> 
     <strong>Technologies Exposure:</strong><br/> 
     <div ng-hide="editorEnabled">{{val.exposure}}</div> 
     <div ng-show="editorEnabled"> 
     <textarea ng-show="editorEnabled" class="span12" ng-model="val.exposure" rows="12" style="resize:vertical"></textarea> 
     <input type="text" name="tags" placeholder="Tags" class="tagsManager" /> 

Nó xuất hiện như một đầu vào bình thường mà không làm bất kỳ của nó các chức năng như tạo thẻ mới sau khi nhấn hoặc nhập.

Có ai có thể cho tôi biết điều gì đang xảy ra không?

+0

Tôi cho rằng đó là vì nội dung của ng-repeat không xuất hiện khi plugin jQuery chạy. Đề nghị của tôi là bạn sử dụng một chỉ thị tùy chỉnh. Tôi cảm thấy như bất cứ lúc nào bạn cần phải viết cụ thể giàn giáo html/css một chỉ thị là phù hợp hơn. Bạn có quyền kiểm soát tốt hơn đối với hành vi dựng hình + –

+0

có nghĩa là tôi không thể sử dụng trình quản lý thẻ jquery nhưng thay vào đó phải tạo thẻ của riêng mình? tôi bối rối. – user1166085

+0

khởi tạo plugin jQuery từ trong chỉ thị được đề xuất. – charlietfl

Trả lời

10

1.Create một chỉ thị tùy chỉnh mà hoạt động như một wrapper cho jQuery plugin của bạn:

angular.module('<YOUR APP OR MODULE>').directive('tagsManager', function() { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      element.tagsManager(); 
      //whatever other logic would go here 
     } 
    }; 
}); 

Sau đó, loại bỏ các khởi tạo tự động tabsManager (cái gì đó như $('<SELECTOR>').tagsManager(); hoặc jQuery('<SELECTOR>').tagsManager();) từ kịch bản của bạn

Cuối cùng, trong ng-repeat của bạn, thêm chỉ thị vào phần tử đầu vào (tùy ý thêm các thuộc tính khác - bạn có thể phải lập trình hành vi cho các thuộc tính này trong chỉ thị của bạn - nếu chúng được yêu cầu)

<input tags-manager> 

Điều này sẽ làm cho AngularJS khởi tạo tabQuản lý trên đầu vào của bạn (thông qua chỉ thị tùy chỉnh) sau khi chúng được hiển thị trong DOM.

Làm cho tinh thần?

+0

Hty! tôi nghĩ rằng im bắt đầu để có được một ý tưởng về những gì bạn đang đề cập đến. hãy để tôi thử nó và quay lại với u cho dù nó có thành công hay không. Cảm ơn rất nhiều bạn! – user1166085

+0

Đảm bảo bao gồm các tập lệnh theo thứ tự sau: jQuery, plugin jQuery, angular.js, app.js, ... – finishingmove

+0

hey cảm ơn rất nhiều! nó hoạt động như một sự quyến rũ và tôi không cần phải lập trình thêm hành vi cho các thuộc tính. CẢM ƠN! = D – user1166085

Các vấn đề liên quan