2013-04-21 34 views
5

Sau khi nghiên cứu các dự án khác nhau và đọc nhiều tài liệu như tôi có thể xử lý, tôi đã gặp sự cố với cách đưa chỉ thị vào ứng dụng của mình. Ứng dụng được thiết lập như sau:Góc - Chỉ thị và sử dụng Mô-đun

app.js - chỉ cần phần trên

angular.module('ngDashboard', ['ngCookies','ngResource','ngDashboard.filters', 'ngDashboard.services', 'ngDashboard.directives']) 

Tất cả các module hoạt động tốt trừ (nó là một ứng dụng được viết lại từ một ví dụ) cho các chỉ thị mà don' t làm việc tại tất cả:

directives.js - sau đây kHÔNG làm việc và không thực hiện các chỉ thị về việc xem:

angular.module('ngDashboard.directives', []). 
    directive('funkyElement', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     scope: 'isolate', 
     template: '<div>gonna parse this: {{orig}} <br/>... and get this: {{obj}}</div>', 
     //templateUrl: 'template.html', 
     compile:function (element, attr, transclusionFunc) { 
      return function (scope, iterStartElement, attr) { 
       var origElem = transclusionFunc(scope); 
       var content = origElem.text(); 
       scope.orig = content; 
       scope.obj = my_custom_parsing(content); 
      }; 
     } 
    }; 
}); 

sau đây trong file directives.js cùng làm hoạt động đúng và chỉ thị thực hiện:

angular.module('ng').directive('funkyElement', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     scope: 'isolate', 
     template: '<div>gonna parse this: {{orig}} <br/>... and get this: {{obj}}</div>', 
     //templateUrl: 'template.html', 
     compile:function (element, attr, transclusionFunc) { 
      return function (scope, iterStartElement, attr) { 
       var origElem = transclusionFunc(scope); 
       var content = origElem.text(); 
       scope.orig = content; 
       scope.obj = my_custom_parsing(content); 
      }; 
     } 
    }; 
}); 

HTML rất đơn giản:

<funky-element> 
    Parse me... come ooooon! Just parse meee! 
</funky-element> 

Câu hỏi của tôi là, cách thích hợp để bao gồm một tập hợp các chỉ thị và có lẽ lý do tại sao là gì ví dụ đầu tiên (sử dụng ngDashboard.services) không hoạt động.

+0

Bạn có thể gửi người gửi thư với mã trực tiếp không? Đó là bên cạnh không thể nói những gì đang xảy ra mà không nhìn thấy mã nhiều hơn nữa. Dựa trên những gì tôi có thể thấy cho đến nay, tôi cho rằng bạn không khởi tạo ứng dụng của mình bằng cách sử dụng 'ng-app =" ngDashboard "' hoặc có những thứ lộn xộn khi bao gồm các tệp. Một lần nữa, mã trực tiếp sẽ hiển thị rõ ràng tất cả điều này. –

+0

Tôi sẽ đăng một số mã trực tiếp, nhưng toàn bộ ứng dụng hoạt động tốt, tất cả các dịch vụ, bộ điều khiển, điều duy nhất không hoạt động đúng là chỉ thị. – lucuma

+0

Đó là tệp app.js được lưu trong bộ nhớ cache hoặc tôi không nhấn lưu sau khi thêm phụ thuộc chỉ thị. Sau khi rối tung với nó quá lâu, tôi nghi ngờ rằng nó không được cứu nhưng tôi mở ra khả năng đó. – lucuma

Trả lời

5

Nó chỉ ra rằng tệp app.js tôi đã được lưu vào bộ nhớ cache để phụ thuộc chỉ thị không có hoặc tôi đã bỏ qua để lưu nó (cả hai có thể với công việc cuối tuần và đêm muộn). Kể từ khi vấn đề này đã được cố định sau khi tôi làm một bản cập nhật để app.js tôi sẽ đánh dấu đây là giải quyết với sự tư vấn của:

  1. Kiểm tra các kịch bản giao diện điều khiển để đảm bảo các file của bạn không được lưu trữ
  2. Tắt lưu vào bộ nhớ cache hoàn toàn hoặc sử dụng chế độ ẩn danh.
  3. Luôn chắc chắn rằng những ng ứng dụng được thêm vào tài liệu của bạn (không phải là trường hợp nhưng có thể giúp người khác)
  4. Hãy chắc chắn rằng bạn lưu các tập tin của bạn
  5. Uống nhiều cà phê khi bạn đang mệt mỏi và học tập mới ngôn ngữ lập trình/khuôn khổ.

Cuối cùng liên quan đến Góc, tôi đã không nhận ra bạn có thể thêm chỉ thị vào mô-đun ng và chúng sẽ khả dụng. Tôi chắc chắn đây không phải là cách thực hành tốt nhất, nhưng để thử nghiệm và tập hợp mã nhanh, nó có thể có ích.

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