2017-01-08 1 views
0

Ich habe Probleme damit, meine Ember-Anwendung mit Firebase arbeiten zu lassen. Ich habe alle Beiträge hier auf Stackoverflow über die ähnliche Angelegenheit durchgesehen, aber ich habe die Antwort auf mein Problem nicht gefunden. Also hier ist es:EmberError: Nichts hat die Aktion bearbeitet

Jedes Mal, wenn ich versuchen, Daten in Eingabefelder zu setzen und legt sie mit einem Knopf i die Konsole Fehler:

EmberError 
code : undefined 
description : undefined 
fileName : undefined 
lineNumber : undefined 
message : 

"Nothing handled the action 'createBook'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble." 

Mein Modell:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    author: DS.attr('string'), 
    picture: DS.attr('string'), 
    buyer: DS.attr('string'), 
    bought: DS.attr('boolean', { defaultValue: false }), 
    createdAt: DS.attr('date', { defaultValue() { return new Date(); } }) 
}); 

Und mein Controller :

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 
     createBook: function(){ 
      var newBook = this.store.createRecord('book', { 
       title: this.get('title'), 
       author: this.get('author'), 
       picture: this.get('picture'), 
       buyer: this.get('buyer'), 
       bought: this.set(false), 
       createdAt: new Date().getTime() 
      }); 
      newBook.save(); 
      //reset values after create 
      this.setProperties({'title' : '', 
           'author' : '', 
           'picture' : '', 
           'buyer' : '' 
      }); 

     } 
    } 
}); 

Die Vorlage:

{{outlet}} 

<div style ="margin-left:130px;"> 
    <h1> blabla </h1> 
    {{input type="text" value=title placeholder="Add Title"}}<br> 
    {{input type="text" value=author placeholder="Add author"}}<br> 
    {{input type="text" value=picture placeholder="Add picture"}}<br> 
    {{input type="text" value=buyer placeholder="buyer"}}<br> 

</div> 

    <button class="btn btn-default" {{action "createBook" }}> Create</button> 
    {{#each model as |book|}} 
    <ul> 
     <li>{{book.title}}</li> 
    </ul> 
    {{/each}} 

Die Verbindung zwischen Firebase und Ember ist zu 100% korrekt eingerichtet. Die Regeln für firebase wurden für das Lesen und Schreiben auf true gesetzt. Das einzige Problem ist, dass die Daten nicht an Firebase gesendet werden.

+3

Sind Sie * sicher * das ist der richtige Controller für diese Vorlage? Überprüfen Sie die Dateinamen, besser sie veröffentlichen. Mit dem Verzeichnis relativ zu Ihrem Projektstamm. – Lux

Antwort

0

Danke @Lux für Ihren Rat. Es gab einige Dinge, die mit meinem Code nicht stimmen. Ich erstellte model und controller namens Buch, aber route genannt books. Ich wusste nicht, dass es eine Wirkung auf meine model and controller.

So landete ich mit bis:

app/controllers/book.js 
app/model/book.js 
app/routes/book.js 
app/templates/book.hbs 

Das war nicht genug. Ich hatte auch Inhalt meiner controller

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 
     createBook: function(){ 
      var newBook = this.store.createRecord('book', { 
       title: this.get('title'), 
       author: this.get('author'), 
       picture: this.get('picture'), 
       buyer: this.get('buyer') 
      }); 
      newBook.save(); 
      //reset values after create 
      this.setProperties({'title' : '', 
           'author' : '', 
           'picture' : '', 
           'buyer' : '' 
      }); 

     } 
    } 
}); 

zu bearbeiten Wie man sehen kann ich die Zeilen entfernt haben, dass die Standardwerte von bought und createdAt wurden Einstellung. Es war genug, sie nur in das Modell selbst zu setzen.

+1

Sie können 'Bücher'-Route haben, aber der entsprechende Controller wäre' Bücher' – kumkanillam

Verwandte Themen