2012-12-21 12 views
6

Tôi có chế độ xem ASP.NET MVC 4 tự động tải hai partials lồng nhau thành các phần tử <div> qua các cuộc gọi JQuery AJAX. Mỗi partials có một đống Javascript khá lớn của riêng nó. Để có được nó tất cả làm việc, tôi hiện đang có tất cả các Javascript trong success của mỗi cuộc gọi AJAX:Lượt xem một phần của Javascript và MVC4 được tải bằng AJAX

function LoadPartial(someImportantId) { 
    $.ajax({ 
     url: '@Url.Action("LoadThePartial")' + '?id=' + someImportantId, 
     type: 'POST', 
     async: false, 
     success: function (result) { 
      $("#partialContainerDiv").html(result); 
      //here there be great piles of javascript 
     } 
    }); 
} 

Vì có hai trong số các partials và mỗi đòi hỏi hàng trăm dòng Javascript, các tập tin giao diện chính là nhận được khó quản lý. Tôi muốn đặt tất cả mã script này vào một tệp .js riêng biệt, nhưng tôi vẫn đủ mới để Javascript dựa vào các công cụ gỡ lỗi tập lệnh của Chrome và tôi đang gặp khó khăn trong việc tìm hiểu cách (và nếu) Tôi có thể tải tập tin kịch bản này. Tôi đã thử:

No script in debugger

  • Thêm một kịch bản bao gồm màn hình chính. Điều này không hoạt động. Không có Javascript của một phần được đính kèm chính xác, có ý nghĩa trên mức đồng bộ hóa.

Stuff does not work

Có cách nào mà tôi có thể có một tập tin javascript riêng biệt cho một AJAX nạp một phần và vẫn có thể gỡ lỗi một phần trên máy khách? Quan trọng hơn, tôi đặt tất cả Javascript này cho các khung nhìn từng phần được tải bằng AJAX ở đâu?

Trả lời

5

Bao bọc tập lệnh cho một phần của bạn trong một chức năng có trong trang chính; gọi hàm trong trình xử lý thành công AJAX, thực hiện các tập lệnh sau khi partials của bạn đã tải.

+0

Có cách nào tôi có thể đặt các chức năng trong tệp tập lệnh riêng biệt không? –

+0

Có; về cơ bản bạn sẽ bọc toàn bộ tệp _DiagnosticAssessment.js_ của bạn trong một hàm được đặt tên, sau đó gọi hàm đó theo tên để _execute_ mã sau khi sẵn sàng. – Mathletics

+1

Thật không may, tôi có rất nhiều cuộc gọi cú pháp dao cạo (như '@ Url.Action()') trong Javascript của tôi. May mắn thay, tôi nghĩ rằng tôi có thể khắc phục điều đó với sự trợ giúp từ http://stackoverflow.com/q/4624626/27457. Cảm ơn! –