2016-04-10 11 views
0

Ich bin neu in Ember und versuche, eine sehr einfache App als Lernübung in 2.4 zu bauen. Ich habe eine Liste von Aufgaben, die auf der Indexseite angezeigt werden. Und ich habe Aktionen an jeden zum Löschen angehängt. Und haben Sie eine Formularzeile am unteren Rand der Seite mit einer Aktion zum Speichern von Aufgaben.Lösche einen Datensatz von der Indexseite

Ich habe einen Index-Controller. Keine definierten Indexrouten. Ein Modell für Aufgaben unter app/models/task.js

Meine Funktion zu saveTask funktioniert. Aber ich kann die deleteTask nicht funktionieren lassen. Ich weiß, dass ich das Objekt, das ich löschen möchte, nicht richtig übergebe. Der zurückgegebene Fehler ist Uncaught TypeError: undefined is not a function index.js:26 deleteTask.

Kann mir jemand die richtige Syntax erklären?

app/templates/index.hbs 
{{#each model as |task| }} 
    <div class="form-horizontal form-group row"> 
     <div class="col-xs-4 col-md-3"> 
      {{input type="text" value=task.taskname class="form-control"}} 
     </div> 
     <div class="col-xs-3 col-md-2"> 
      {{input type="text" value=task.startdate class="form-control"}} 
     </div> 
     <div class="col-xs-3 col-md-2"> 
      {{input type="text" value=task.enddate class="form-control"}} 
     </div> 
     <div class="col-xs-3 col-md-2"> 
      {{input type="text" value=task.duration class="form-control"}} 
     </div> 
     <div class="col-xs-3 col-md-2"> 
      {{input type="text" value=task.banding class="form-control"}} 
     </div> 
     <div class="col-xs-2 col-md-1"> 
      <button type="button" class="btn btn-default btn-sm" aria-label="Remove task" {{action 'deleteTask' task}}> 
       <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 
      </button> 
     </div> 
    </div> 
{{/each}} 

und die Steuerung

app/controllers/index.js 
import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 

     deleteTask(task) { 
     this.destroyRecord(); 
     this.transitionTo('index'); 
    } 
    } 
}); 
+0

'dies' in Ihrem Kontext ist der Controller und der Controller hat keine' destroyRecord' Methode, welchen Datensatz möchten Sie löschen? Ist es das aktuelle Modell? –

Antwort

1

Sie destroyRecord in deleteTask auf this rufen nicht auf dem task, die eigentlich die Platte ist. Ich denke, das ist alles.

Sie sollten in der Lage sein, in Entwickler-Tools die Zeile in Code zu sehen, die wirft. Ich wette, es ist this.destroyRecord();.

+0

Wenn ich es zur Aufgabe ändere, ändert sich der Fehler zu 'Mirage: Ihre Ember-App hat versucht, '/ tasks/2' zu löschen, aber es wurde keine Route definiert, um diese Anfrage zu bearbeiten. Definieren Sie eine Route, die diesem Pfad in Ihrer mirage/config.js-Datei entspricht. Hast du vergessen, deinen Namespace hinzuzufügen? 'Was für einen Verbinder fehlt mir? – manisha

+0

Sie haben keine Route für 'task' und' delete' Methode in mirage definiert. Es ist nur ein Problem mit Ihrer API zu verspotten. Schauen Sie sich [mirage Dokumentation] (http://www.ember-cli-mirage.com/) an. Für weitere Fragen, bitte öffnen Sie eine andere Frage, da sie nicht verwandt zu sein scheint. – jelhan

Verwandte Themen