2013-07-22 5 views
8

अद्यतन करें डुरंडल का आधार नामक आधार दृश्य है।Durandal/Knockout। अन्य दृश्य/व्यूमोडेल

मैंने व्यवस्थापक/गुणवत्ता आश्वासन उपयोगकर्ताओं को किसी भी सिस्टम उपयोगकर्ता की नकल करने की अनुमति देने के लिए उस पर एक खोज बॉक्स जोड़ा है। बटन पर क्लिक करें, मैं वर्तमान में प्रदर्शित होने वाले दृश्य के दृश्य को अपडेट करने में सक्षम होना चाहता हूं।

  • शैल (ब्लू) देखें (लाल)

मैं कैसे के बारे में जाना होगा, मेरे बच्चे को देखने पर एक समारोह को उजागर ताकि मैं इसे से कॉल कर सकते हैं शैल, या बटन में हुक बच्चे के दृश्य से खोल की घटना पर क्लिक करें।

प्रश्न:

Durandal किसी भी हुक है कि मैं बुलबुले के का इस्तेमाल करते हैं या अलग-अलग दृश्यों या माता-पिता के कंटेनर के लिए घटनाओं पारित कर सकते हैं बेनकाब करता है?

उत्तर

11

मान लें कि आपके पास कई बच्चे के विचार हैं और खोल और बच्चों के बीच निर्भरताएं पेश नहीं करना चाहते हैं, इसके लिए डूरंडल की घटना प्रणाली का उपयोग करना संभवतः सबसे अच्छा है। शेल व्यू प्रकाशक बन जाएगा और बच्चे के विचार ग्राहक होंगे।

कार्यरत डेमो के लिए http://dfiddle.github.io/dFiddle-1.2/#/event-aggregator/dFiddle देखें।

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); 
     } 
    }; 
}); 

अन्य विकल्प है कि माना जा सकता है

  • एक साझा मॉड्यूल है कि गुणों के साथ एक सिंगलटन देता है कि होना चाहिए माता-पिता/बच्चों के बीच साझा किया गया। इसे सभी माता-पिता/बच्चों में निर्भरता के रूप में परिभाषित करने की आवश्यकता है।
  • एक वैश्विक उदा। गुणों के साथ myApp ... drawback: वैश्विक
+1

यह एक बहुत अच्छा ठंडा समाधान है। :) रेनर फिर से सभी मदद के लिए धन्यवाद। –