2015-01-20 8 views
7

किसी नियंत्रक के भीतर से मॉडल का उपयोग कैसे किया जा सकता है? वर्तमान में नीचे दिए गए कोड का उपयोग करने से "अपरिभाषित एक फ़ंक्शन नहीं है" (आकृति जेएस असफल हो जाएं ...)।नियंत्रक के अंदर एम्बर एक्सेस मॉडल

मॉडल/plan.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name:  DS.attr('string'), 
    period:  DS.attr('number'), 
    price:  DS.attr('number'), 
}); 

मार्गों/checkout.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    model: function(params) { 
     return this.store.find('plan', params.plan_id); 
    } 
}); 

नियंत्रकों/checkout.js

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    submitPayment: function(error, result) 
    { 
      var plan = this.get('model'); 
    } 
} 

router.js

Router.map(function() { 
    this.route('checkout', {path: '/checkout/:plan_id'}); 
}); 
+0

शायद 'इस' नहीं 'submitPayment' में नियंत्रक है। जमा करना एक कार्रवाई है? यदि ऐसा है तो आपको इसे एक क्रिया वस्तु के अंदर रखना चाहिए। या सामान्य चेकआउट, मॉडल हुक में मॉडल लाया जा रहा है? – blessenm

+0

सबमिटपेमेंट केवल एक कार्य के भीतर से एक समारोह कहा जाता है। हां, मॉडल संग्रहित किया जा रहा है, वहां कोई समस्या नहीं है। –

+1

'एम्बर। नियंत्रक' को विस्तारित करने के बजाय, 'एम्बर.ऑब्जेक्ट कंट्रोलर' आज़माएं। – blessenm

उत्तर

8

मैं इसे बाहर अंत में खोज निकाला है। plan = this.get('model') कार्रवाई के लिए काम करता है। यह मॉडल देता है, और गुण plan.get('price') के साथ उपयोग किया जा सकता है। आदर्श नहीं है, लेकिन यह काम पूरा हो जाता है। यह काम क्यों नहीं किया क्योंकि यह एक समारोह के अंदर था जिसे कार्रवाई के अंदर से कॉलबैक कहा जाता था। तो शायद "यह" का दायरा कॉलबैक फ़ंक्शन पर भी नहीं किया गया था। मैंने कॉलबैक फ़ंक्शन को कार्रवाई के अंदर एक आंतरिक फ़ंक्शन के रूप में स्थानांतरित कर दिया, फिर "यह" दायरा काम किया।

गुंजाइश समस्या का सवाल है, यहाँ समाधान setting an application controller variable to results returned from AJAX call

+0

मैं इसका उपयोग करने में सक्षम नहीं हूं .get () एक नियंत्रक के अंदर। जैसे: निर्यात डिफ़ॉल्ट Ember.Controller.extend ({ मॉडल: this.get ('मॉडल'), संदेश: this.model.message, .... .. – Vaibhav

+2

यह पता चल यह इस तरह काम करता है। एक नियंत्रक: संदेश: Ember.computed.alias ('model.message'), ... – Vaibhav

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