EmberJS डेटा सहेज रहा है

मेरा ऐप स्थिरता डेटा का उपयोग करता है (बाद में स्थानीय स्टोरेज पर बंदरगाह होगा) और मुझे उपयोगकर्ता क्लिक के आधार पर 'सेव' विधि लागू करने की आवश्यकता है। उपयोगकर्ता क्लिक एक ऐसी क्रिया है जो दृश्य में और उसमें से दृश्य को मानचित्र करती है, मॉडल को जानकारी जारी रखने के लिए इसे नियंत्रक में स्थानांतरित कर दिया जाता है, अनिवार्य रूप से टेम्पलेट में:

<button {{action 'save' this target='view'}}>Save</button>  <!-- note that the 'this' keyword I am sending corresponds to a specific instance of the model that is in a collection, done using an {{#each model}} loop

The view has

actions:{
    save:function(card){
      //perform some UI activity
       this.get('controller').send('save',card);//card representing 'this'
    }
}

The controller has:

actions:{
    save:function(card){
       console.log("controller reached");//does execute
       card.save();//spits out an error
    }
}

Everything works fine however the card.save() method call does not work in the controller. I mean, all I am trying to do is to persist the specific 'card' to my data, but it keeps spitting:

Uncaught TypeError: Object # has no method 'save'

What am I missing here ?

Side notes:

  1. The Controller returns a collection of models
  2. The corresponding'view' for the controller also has the 'edit' partial loaded in it. So when the user chooses to 'edit' a specific model, it doesn't transition into a different URL, rather it loads the 'editing' form within the same URL.
  3. This means that the model in this specific controller is essentially the collection and I only want to save the specific model that is being edited.
0
निश्चित रूप से, मैं स्थिरता डेटा का उपयोग कर रहा हूँ। यहां एक नमूना है: App.Card.FIXTURES = [{id: 1, front: "एम्बर स्टोर का उद्देश्य क्या है?", पीछे: "लोड किए गए मॉडल को पकड़ता है और उन मॉडलों को पुनर्प्राप्त करता है जिन्हें अभी तक लोड नहीं किया गया है", stack_id: 1}, ...
जोड़ा लेखक Parijat Kalia, स्रोत
ओह यह बहुत बुनियादी है: App.StackCardsRoute = Ember.Route.extend ({model: function() {return App.Card.FIXTURES;}}) यह 'स्टैक' संसाधन के तहत 'कार्ड' परिभाषित होने के बाद से स्टैक कार्ड मार्ग है :)
जोड़ा लेखक Parijat Kalia, स्रोत
मैं सोच रहा हूं, शायद मुझे एक ऐप। कार्ड नियंत्रक को रूट के बिना परिभाषित करना चाहिए और यहां परिभाषित 'सेव' एक्शन है। जिस मॉडल को वह लौटाता है वह निश्चित रूप से 'आईडी' का एक विशिष्ट उदाहरण है।
जोड़ा लेखक Parijat Kalia, स्रोत
आप एम्बर डेटा का उपयोग कर रहे हैं? एम्बर मॉडल?
जोड़ा लेखक Kingpin2k, स्रोत
क्या आप मुझे इस के लिए कक्षा दिखा सकते हैं? ऐप। SomRecord = Ember.Object ....
जोड़ा लेखक Kingpin2k, स्रोत
स्थिरता नहीं, मेरा मतलब है कि आप App.Card को परिभाषित करते हैं
जोड़ा लेखक Kingpin2k, स्रोत

1 उत्तर

ऐसा प्रतीत होता है कि आप किसी क्लाइंट साइड रिकॉर्ड प्रबंधन लाइब्रेरी (जैसे एम्बर-डेटा या एम्बर-मॉडल) का उपयोग नहीं कर रहे हैं। ऐसा कहा जा रहा है कि, ऐप.कार्ड के आपके उदाहरण वास्तव में कुछ भी नहीं हैं, वे सिर्फ पीओजेओ हैं और पीओजेओ पर परिभाषित कोई बचत विधि नहीं है।

ऐसा लगता है जैसे आप एम्बर डेटा, या एम्बर मॉडल में कुछ शोध करना चाहते हैं (मैं एम्बर डेटा का सुझाव दूंगा, http://emberjs.com/guides/models/ )

यदि आप या तो उपयोग नहीं करना चाहते हैं, तो आप डेटा को सहेजने के लिए केवल AJAX कॉल का उपयोग कर सकते हैं:

save:function(card){
   console.log("controller reached");//does execute
  //      card;//spits out an error
   $.ajax({... , data:$(card), ...});
}

यदि यह स्थिरता है और आपके पास इसे कहीं भी सहेजने का कोई इरादा नहीं है, और यह सिर्फ एक सूखा दौड़ है, एक बदसूरत चेतावनी या लॉग जोड़ें

save:function(card){
   console.log("controller reached");//does execute
   console.log('pretend to save ' + card);
   alert('pretend to save ' + card);
}
0
जोड़ा
खैर, डेटा पर्सिस्टेंस लाइब्रेरी को बाद में तय किया जा सकता है, एम्बर-डेटा या एम्बर-मॉडल, अभी अभी सेव() विधि ऑफ-कोर्स केवल एक नाम है लेकिन विचार यह सुनिश्चित करना है कि चीजें सामने के अंत में काम करें, आपको पता है पूर्वाभ्यास/क्लिक होने की
जोड़ा लेखक Parijat Kalia, स्रोत
सूखे रन को दबाएं और 'सेव' नहीं समझ पाएंगे, हालांकि सवाल थोड़ा अलग है, हम ऐप। कार्ड। फिक्स्चर के एक उदाहरण तक पहुंचने की कोशिश कर रहे हैं, जबकि युक्त नियंत्रक (स्टैककार्ड्स कंट्रोलर) App.Card.FIXTURES का संग्रह देता है। ऑब्जेक्ट 'कार्ड' के लिए कोई मार्ग/नियंत्रक नहीं है। एक दृढ़ता पुस्तकालय मानते हैं, तो सवाल यह है कि, आप एक नियंत्रक में केवल 'विशिष्ट मॉडल को कैसे सहेजते हैं जो एक ही प्रकार के मॉडल का संग्रह देता है'। उम्मीद है कि समझ में आता है
जोड़ा लेखक Parijat Kalia, स्रोत
मैं पूरी तरह से समझता हूं, लेकिन सहेजना एक तरीका है जो डीएस.मोडेल (एम्बर मॉडल) के उदाहरणों पर मौजूद नहीं है, सिर्फ एक pojo पर, मैं ऊपर कुछ और जानकारी डालूंगा।
जोड़ा लेखक Kingpin2k, स्रोत