2013-07-22 44 views
8

Durandal có chế độ xem cơ sở có tên là shell.Durandal/Knockout. Cập nhật chế độ xem/chế độ xem khác

Tôi đã thêm hộp tìm kiếm trên đó để cho phép quản trị viên/người dùng đảm bảo chất lượng bắt chước bất kỳ người dùng hệ thống nào. Khi nhấp vào nút, tôi muốn có thể cập nhật chế độ xem của bất kỳ chế độ xem nào hiện được hiển thị.

  • Shell (Blue) View (Red)

Làm thế nào tôi sẽ đi về, để lộ một hàm vào xem con tôi để tôi có thể gọi nó là từ vỏ hoặc móc vào sự kiện nhấp nút của trình bao từ chế độ xem con.

Câu hỏi:

Liệu Durandal lộ bất kỳ móc mà tôi có thể tận dụng để bong bóng hoặc vượt qua các sự kiện quan điểm khác nhau hoặc container cha mẹ?

Trả lời

11

Giả sử bạn có nhiều chế độ xem con và không muốn giới thiệu sự phụ thuộc giữa shell và trẻ em, tốt nhất nên sử dụng hệ thống sự kiện của Durandal cho việc này. Chế độ xem vỏ sẽ trở thành nhà xuất bản và con sẽ xem người đăng ký.

Khám phá http://dfiddle.github.io/dFiddle-1.2/#/event-aggregator/dFiddle để có bản trình diễn hoạt động.

publisher.js

define(['durandal/app'], function (app) { 

    var message = ko.observable(); 
    var canPublish = ko.computed(function() { 
     return message() ? true : false; 
    }); 

    return { 
     message: message, 
     canPublish:canPublish, 
     publish: function() { 
      app.trigger('sample:event', message()); 
     } 
    }; 
}); 

subscriber.js

define(['durandal/app'], function (app) { 

    return { 
     received: ko.observableArray([]), 
     subscription:ko.observable(), 
     subscribe: function() { 
      var sub = app.on('sample:event').then(function(message) { 
       this.received.push(message); 
      }, this); 

      this.subscription(sub); 
     }, 
     unsubscribe: function() { 
      this.subscription().off(); 
      this.subscription(null); 
     } 
    }; 
}); 

tùy chọn khác có thể được coi là

  • một module chia sẻ rằng trả về một singleton với tài sản mà nên là được chia sẻ giữa phụ huynh/trẻ em. Nhược điểm nó cần phải được định nghĩa là phụ thuộc trong tất cả cha/con.
  • một toàn cầu, ví dụ: myApp với các thuộc tính ... Nhược điểm: phơi bày toàn cầu
+1

Đây là giải pháp tuyệt vời như vậy. :) Cảm ơn tất cả sự giúp đỡ một lần nữa Rainer. –

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