2013-08-03 10 views
6

मैं इस तरह एक मार्ग है:गतिशील रूप से Ember.Route मॉडल को कैसे अपडेट करें?

App.PeopleRoute = Ember.Route.extend({ 
    model: function() 
    { 
    return App.Persons.find(personId); 
    } 
}); 

जहां personId asynchronically भरी हुई और एंबर बाहर एक सामान्य JavaScript वेरिएबल है। अब जब मार्ग प्रदर्शित होता है तो यह वर्तमान व्यक्ति आईडी प्राप्त करता है और उचित डेटा प्रदर्शित करता है। लेकिन जब मैं व्यक्ति के मूल्य को बदलता हूं तो यह दृश्य को अपडेट नहीं करता है।

तो मेरा सवाल यह है कि नए व्यक्ति के साथ रिकॉर्ड खोजने के लिए इस मार्ग को रीफ्रेश करने का एक तरीका क्या है?

+0

मुझे शायद ऐसा करने का कोई तरीका मिल सकता है लेकिन इससे पहले कि आप मुझे बता सकें कि आप ऐसा क्यों करना चाहते हैं? आप ऐसा कुछ करने की कोशिश कर रहे हैं जो एम्बर.जेएस तरीके से आसान हो जाएगा। –

+0

@tarasm सही है, यदि आप अपने आप को बॉक्सवर्क से बाहर नहीं करने के लिए ढांचे से लड़ते हैं तो आपको अपने दृष्टिकोण पर पुनर्विचार करना चाहिए, क्योंकि निश्चित रूप से आपको जो चाहिए उसे हासिल करने का एक बेहतर तरीका है। अपने उपयोग मामले का विस्तार से विस्तार से प्रयास करें और मुझे यकीन है कि हम आपकी मदद कर सकते हैं ... – intuitivepixel

उत्तर

2

ऐसा इसलिए है क्योंकि model हुक केवल तब निष्पादित किया जाता है जब गतिशील सेगमेंट वाले मार्गों के लिए URL के माध्यम से दर्ज किया जाता है। इसके बारे में here के बारे में और पढ़ें।

इसके लिए सबसे आसान समाधान transitionTo का उपयोग करना होगा।

App.PeopleRoute = Ember.Route.extend({ 
    model: function(params) 
    { 
    return App.Persons.find(params.personId); 
    }, 
    actions: { 
    personChanged: function(person){ 
     this.transitionTo("people", person); 
    } 
    } 
}); 

App.PeopleController = Em.Controller.extend({ 
    observeID: function(){ 
    this.send("personChanged"); 
    }.observes("model.id"); 
}); 
+0

मैंने इस समाधान की कोशिश की लेकिन यह काम नहीं करेगा। संक्रमण होता है लेकिन मॉडल समान रहता है। –

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