2012-02-09 32 views
6

Mô hình chế độ xem ứng dụng của tôi đang phát triển rất lớn. Làm cách nào để phân chia chính xác nó thành các tệp và không gian tên? Tôi có tạo một đối tượng không gian tên thứ hai và có mô hình khung nhìn được chuyển thành tham số không?chia nhỏ knockoutjs

var BALL = {}; 
BALL.roll = function(avm) { // function code }; 
+3

Câu trả lời này có thể giúp bạn: http://stackoverflow.com/questions/8676988/example-of-knockoutjs-pattern-for-multi-view-applications. Nó có ba tùy chọn để sử dụng nhiều mô hình xem trong Knockout. –

Trả lời

11

Tùy chọn cá nhân của tôi không chia tách các cuộc gọi applyBindings và thay vào đó làm việc với một nhánh không gian tên toàn cầu.

Lý do của tôi là cho nhiều ràng buộc để hoạt động chính xác và không xung đột bạn cần phải rất cẩn thận các phần tử dom mục tiêu đã chọn của bạn không thay đổi. Thật không may, đánh dấu có một thói quen khó chịu thay đổi theo thời gian mà có thể giúp bạn gặp rắc rối với chế độ xem của bạn sau này.

cách tiếp cận chung của tôi mà tôi đã sử dụng trên một dự án KO rất lớn đã được

  1. Một namespace cấp cao nhất toàn cầu cho toàn bộ ứng dụng ví dụ myapp
  2. Phân ra các khối chức năng riêng biệt vào các tập tin riêng biệt. Thông thường với không gian tên riêng biệt của chúng. ví dụ. `myapp.navigation '
  3. Nếu một không gian tên cụ thể bị chia quá lớn thành các không gian tên phụ xa hơn hoặc nếu không thích hợp, hãy chia tách cùng một không gian tên trên nhiều tệp.
  4. Trộn tất cả các tệp ở cuối để duy trì hiệu suất.

Một số mã namespace Tôi đã gần đây đã được sử dụng

Vì vậy, trong tập tin myapp.navigation của bạn, bạn sẽ phải

Namespace("myapp.navigation", function() { 
    var self = this; // your myapp.navigation object 

    this.someFunction = function() { 
    }  
}); 

Đây chỉ là viết tắt cho việc sử dụng một chức năng tự cách gọi đến vượt qua trong không gian tên được tạo thủ công. Nó cung cấp cho bạn một kết thúc riêng tư và bạn được tự do sử dụng nhiều cuộc gọi không gian tên với cùng một không gian tên trong tệp js khác nhau.

gọi applyBindings của bạn bây giờ có thể luôn luôn

ko.applyBindings(myapp); 

Hope this helps.

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