Tôi đang làm việc trên ứng dụng web nơi trang chính chứa hai phần: khối không đổi luôn hiển thị và khối thông tin được tạo thành bởi một trong 3 chế độ xem một phần. Mỗi khung nhìn một phần xuất hiện như là kết quả của yêu cầu AJAX và được tải chỉ một lần (sau khi các cửa sổ chuyển đổi đó được cung cấp bởi jquery). Nó hoạt động tốt nhưng tôi đã phải đối mặt với một vấn đề.Tôi có thể đặt JavaScript ở một phần Chế độ xem
Mã html của một phần lượt xem chứa hàm js được sử dụng trong khối không đổi và trong khối thông tin. Khi trang được tải, các chức năng này có thể “nhìn thấy” và hoạt động nhưng chức năng chia sẻ lại không thể tìm thấy các khai báo chức năng và cảnh báo cho tôi về điều này. Tôi không thể giải quyết vấn đề bằng cách chuyển chúng thành tệp js bên ngoài vì cú pháp dao cạo có thể được tìm thấy trong mã của chúng.
Tôi có thể làm gì với điều này?
Cảm ơn.
Cập nhật:
Cuối cùng tôi đã quyết định để giải quyết vấn đề tách mã js của tôi từ quan điểm. Vì vậy, câu hỏi mới là làm thế nào để bao gồm cú pháp dao cạo vào tập tin js hoặc thay thế chấp nhận được là gì. Các giải pháp phổ biến mà tôi đã tìm thấy là sử dụng các biến toàn cầu, thuộc tính dữ liệu và thuộc tính tôi thích hơn - thư viện RazorJS của John Katsiotis.
http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files
Tôi hy vọng nó sẽ làm việc ổn định và làm cho Resharper hạnh phúc.
Chúc mừng!
Cập nhật:
Sau 3 năm, tôi nhớ lại câu hỏi này và đã quyết định cập nhật nó theo kinh nghiệm của tôi. Trong thực tế bây giờ tôi không muốn khuyên bạn nên sử dụng thư viện bổ sung cho điều đó. Đặc biệt là nếu bạn không phải là thành viên duy nhất trong nhóm dự án… Sẽ tốt hơn nếu bạn được đảm bảo trong tất cả các thư viện của mình, chúng được hỗ trợ bởi người sáng tạo và cộng đồng và có thể dễ dàng tích hợp vào IDE của bạn (nếu sử dụng cú pháp đặc biệt) . Ngoài ra tất cả các chàng trai trong nhóm của bạn cũng nên biết nó hoạt động như thế nào. Vì vậy, bây giờ tôi sẽ đề nghị làm những việc tiếp theo:
- Giữ tất cả JS trong các tệp riêng biệt. Cô lập nó càng nhiều càng tốt. Cung cấp API bên ngoài cho nó.
- Gọi hàm API từ Chế độ xem của bạn.
- Chuyển tất cả các URL được tạo bằng Razor, tin nhắn văn bản, hằng số dưới dạng tham số tài nguyên.
Ví dụ:
js file:
$.api.someInitFunction = function(resources){ ... }
Xem:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>
tôi không thể quyết định những gì câu trả lời là có ích hơn đối với tôi :) – Tomy
Cảm ơn và hoan nghênh để Stackoverflow :) –
Thật vui khi bắt đầu với một buổi tiếp tân tuyệt vời như vậy, cảm ơn rất nhiều! – Tomy