2014-04-24 18 views
8

में रूट से एम्बर मॉडल तक कैसे पहुंचे, शायद यह नियमित एम्बर एप्लिकेशन के साथ ऐसा कर रहा है जिसमें app.js में बैठे सभी कोड मेरे लिए बहुत आसान हो गए होंगे। लेकिन चूंकि मैं एम्बर सीएलआई का उपयोग कर रहा हूं, मुझे अपने रूट में अपने मॉडल तक पहुंचने में परेशानी हो रही है। मैं अभी भी एम्बर सीएलआई का उपयोग करने के तरीके सीखने की कोशिश कर रहा हूं, इसलिए कृपया मेरी मदद करें।एम्बर सीएलआई

जैसा कि मैं सिर्फ AJAX कॉल को आग लगाना चाहता हूं और डेटा को अपने यूआई पर प्रस्तुत करना चाहता हूं, मैंने अपनी परियोजना में एम्बर मॉडल लाइब्रेरी को डाउनलोड और जोड़ा। मुझे एम्बर डेटा का उपयोग करने की ज़रूरत नहीं है। यह एम्बर मॉडल प्रलेखन है जिसका मैं उल्लेख कर रहा हूं: https://github.com/ebryn/ember-model#example-usage। इसके साथ ही कहा, यहां मेरी निर्देशिका संरचना है कि एंबर CLI प्रस्तावित:

|-app  
    |-controllers 
    | |-customers.js 
    |-models  
    | |-customers.js 
    |-routes  
    | |-customers.js 
    |-templates  
    | |-customers.hbs 
    |-app.js 
    |-index.html 
    |-main.js 
    |-router.js 

यह वास्तविक परियोजना संरचना मैं सिर्फ समस्या पर ध्यान केंद्रित करने के लिए है कि बहुत सरल प्रतिनिधित्व है। के रूप में एंबर मॉडल दस्तावेज में प्रस्तावित मैं अपने ग्राहकों मॉडल (मॉडल \ customers.js) के लिए निम्न कोड कहा:

export default Ember.Model.extend({ 
    nameid: attr(), 
    firstname: attr(), 
    middlename: attr(), 
    lastname: attr(),   
    prefixname: attr(), 
    suffixname: attr() 
}); 

this.url = "http://restapi/api/customers"; 
this.adapter = Ember.RESTAdapter.create(); 

सूचना है कि मैं बजाय "की App.Customers = Ember.Model" निर्यात डिफ़ॉल्ट "करना था .extend ... "। यह एम्बर सीएलआई सम्मेलन है। तो जब मैं अपने ग्राहकों में मॉडल मैं बनाया का उपयोग करने के मार्ग की कोशिश मैं त्रुटि "त्रुटि मार्ग को लोड करते समय: ReferenceError: ऐप से परिभाषित नहीं है" मिल ..

ग्राहकों का कोड:

export default Ember.Route.extend({ 
    model: function() { 
     App.Customers.find(); 
    }, 

    actions: { 
     addnew: function(){ 
      //logic of saving edited customer 
      alert('customer created!'); 
     } 
    } 
}); 

मैं इस कोशिश की .model() - प्रकार का ऑब्जेक्ट देता है supperWrapper और this.modelFor() - शून्य वापस आता है।

कृपया सुझाव दें कि मेरे मॉडल को अपने मार्ग में कैसे संभाला जाए ताकि मैं एम्बर मॉडल द्वारा ऑफ़-द-बॉक्स प्रदान किए गए सीआरयूडी संचालन कर सकूं।

धन्यवाद!

उत्तर

16

मेरा सुझाव है कि आप मॉडल के फ़ाइल नाम को एकवचन में बदलें। customer.js

यदि आप मार्ग फ़ाइल के भीतर मॉडल क्लास तक पहुंचना चाहते हैं तो आपको मॉडल आयात करना होगा। चूंकि एम्बर सीएलआई ES6 मॉड्यूल सिंटैक्स का उपयोग करता है, इसलिए आप सीधे App ऑब्जेक्ट पर कुछ भी एक्सेस नहीं कर सकते हैं। यह संकल्प के माध्यम से आंतरिक रूप से आयात विवरण या एम्बर के माध्यम से किया जाना चाहिए।

import Customer from "../models/customer"; 

अब आप मॉडल हुक में इसका इस्तेमाल कर सकते हैं। आपके उदाहरण कोड में एक और त्रुटि भी है, आपको खोज कॉल से वादा वापस करना होगा।

model: function() { 
    return Customer.find(); 
}, 

मैं तुम क्यों एंबर डाटा से अधिक एंबर मॉडल उठाया, क्योंकि इस उदाहरण के लिए आप एंबर डाटा के साथ कम कोड की आवश्यकता होगी और इसे और अधिक एंबर की तरह जिस तरह से AFAIK होगा उत्सुक हूँ।

+0

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद! यह तय हो चुका है! एम्बर सीएलआई के साथ काम करने के तरीके सीखने के लिए बच्चे के कदम उठाएं। एम्बर डेटा पर एम्बर मॉडल को चुनने का कारण यह है कि मुझे बिना किसी दृढ़ता के हल्के वजन परत (डेटा एक्सेस लेयर) की आवश्यकता होती है। और ईमानदार रहें, यह आंशिक रूप से एम्बर डेटा की सभी कथित अस्थिरता के कारण भी था। – Vinay

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