2012-06-17 29 views
7

का उपयोग करके कई रूटिंग्स को परिभाषित/उपयोग करने के लिए मैंने कई ऐप में अपना ऐप बांटा।रीढ़ की हड्डी और requjs

main.js 
app.js 
app1/ 
    |- routing 
    |- controller 
    |- app 
app2/ 
    |- routing 
    |- controller 
    |- app 

1) जब मैं app1 में रूटर इस्तेमाल करने की कोशिश, वे काम करते हैं।
2) जब मैं app2 में राउटर का उपयोग करने का प्रयास करता हूं, तो वे काम नहीं करते हैं।
3) अगर मैं main.js में app2 कार्य में रूटर पर टिप्पणी करता हूं।

मुझे यह व्यवहार क्यों मिलता है?
क्या गिटूब पर एकाधिक रूटिंग और requjs का उपयोग कर ऐप का कुछ उदाहरण है?

धन्यवाद।

यहाँ मेरी कोड है:


** main.js **

define([ 
    'js/app', 
    'js/app1/routing', // the routers in this app work 
    'js/app2/routing' // the routers in this app do not work but 
         // if I comment the previous line (js/app1/routing',) 
         // they works 
], 
function (App) 
{ 
    "use strict"; 
    App.initialize(); 
}); 

** app.js **

define([], 
function() 
{ 
    "use strict"; 
    var app = new Backbone.Marionette.Application(); 

    return app; 
}); 

* * ए pp1/rotuing **

define(['backbone','app1/controller'], function(Backbone, controller) 
{ 
    "use strict"; 
    var Router = Backbone.Marionette.AppRouter.extend({ 

     appRoutes: { 
      '*defaults': 'index1' 
     } 

    }); 
    return new Router({ 
     controller: controller 
    }); 

}); 

** APP2/routing.js **

define(['backbone','app2/controller'], function(Backbone, controller) 
{ 
    "use strict"; 
    var Router = Backbone.Marionette.AppRouter.extend({ 

     appRoutes: { 
      'app2': 'index2' 
     } 

    }); 
    return new Router({ 
     controller: controller 
    }); 

}); 

उत्तर

5

समस्या होने की संभावना जिस क्रम में रूटर फ़ाइलें लोड किए गए हैं के कारण होता है, और राउटर बनाया है।

बैकबोन की history ऑब्जेक्ट मार्गों को निष्पादित करने के लिए ज़िम्मेदार है। यह सभी राउटर पर परिभाषित सभी मार्ग एकत्र करता है, जब राउटर तत्काल होते हैं। फिर यह परिवर्तन के लिए ब्राउज़र के यूआरएल पर नज़र रखता है। जब यह एक बदलाव को देखता है, तो यह पहला उपलब्ध मिलान मार्ग और आग लग जाएगा जो एक मार्ग है, और कुछ छोड़ रहा है।

जब आपके पास *defaults मार्ग परिभाषित किया गया है, तो सबकुछ इससे मेल खाता है। इसलिए, यदि यह मार्ग पहले लोड किया गया है, तो कुछ भी नहीं मारा जाएगा। इसलिए, आपको अपने मार्ग पैरामीटर में अधिक स्पष्ट होने की आवश्यकता होगी ताकि यह एक मार्ग हर समय हिट न हो, या आपको यह सुनिश्चित करना होगा कि यह राउटर आखिरी बार लोड हो।

+0

आपके उत्तर के लिए धन्यवाद। असल में, अगर मैं ''' 'डिफ़ॉल्ट रूप से' '' 'सेट करता हूं,' 'डिफ़ॉल्ट' '' 'index1' 'यह काम करेगा। एक बार फिर धन्यवाद। –

+0

@DerickBailey http://stackoverflow.com/questions/20017210/router-js-function-not-executed क्या आप मेरी मदद कर सकते हैं :) – CodeGuru

+0

@DerickBailey वास्तव में ऐसा लगता है कि अभ्यास में जो आप वर्णन करते हैं उसके विपरीत सत्य है: यदि आप किसी प्रकार के कैचल रूट का उपयोग कर रहे हैं, तो इसे अन्य विशिष्ट मार्गों के काम के लिए _first_ लोड करने की आवश्यकता है। आदर्श रूप से व्यवहार निर्दिष्ट किया जाएगा ताकि हम उस पर भरोसा कर सकें, एक तरफ या दूसरे। –

संबंधित मुद्दे