2013-02-20 1 views
6

Im Moment bauen wir unsere Verbindungen wie folgt aus:Wie erstellt man einen Link, ohne das Modell vorher zu laden?

<a {{action showComment comment href=true}}>Show</a> 

, dass eine Verbindung, die wie /comments/45 aussieht erzeugt.

Leider funktioniert das nur, wenn wir den Kommentar vorab laden - obwohl wir bereits die ID des Kommentars haben. Ist es möglich ohne den Kommentar vorher zu laden?

Etwas, das aussehen könnte:

<a {{action showComment comment_id href=true}}>Show</a> 

Antwort

2

Was ist die eigentliche Frage hier? Das ist mir nicht ganz klar.

So Ihre aktuelle Action-Handler sieht wie folgt aus:

showComment : function(comment){ 
    //do your stuff with the model 
} 

nun Ihre gewünschte Lösung könnte wie folgt aussehen:

<a {{action showCommentById comment_id href=true}}>Show</a> 

und die entsprechenden Handler:

showCommentById : function(commentId){ 
    var comment = App.Comment.findById(commentId); // i assume you have this retrieval method or something like it 
    this.showComment(comment); 
}, 
showComment : function(comment){ 
    //do your stuff with the model 
} 

Would Das funktioniert in Ihrem Fall? Oder hast du etwas anderes vor?


UPDATE: OP möchte haben alle Daten in der Route Handhabung der Route sollte die Aktion "showCommentById" behandeln, die ich vorschlagen, habe vor:

App.ArticlesRoute = Ember.Route.extend({ 
    events : { 
     showCommentById : function(commentId){ 
      var comment = App.Comment.findByIds(commentId); // i assume you have this retrieval 
      this.transitionTo("root.articles.comment", comment); 
     } 
    } 
}); 

Also eigentlich Sie frei sind um zu entscheiden, wo Sie die Aktionen in Ihrer App ausführen sollen.

+0

Das funktioniert, ABER! Wir wollen das Laden von Daten (Suchfunktionen auf Modellen aufrufen) in der Route unseres Routers behalten. Gerade im neuen Router api ist das Laden von Modellen innerhalb einer Route sehr gut gelöst, so dass ich mir nicht sicher bin, ob es das Beste ist, dies in unseren "Navigationsfunktionen" (wie showComment) zu tun, wie Sie vorgeschlagen haben. – kraftwer1

+1

Aber Sie können diesen Anruf leicht an Ihre Route delegieren? Kannst du eine Geige spielen? Dann könnte ich Ihre aktuelle App-Struktur verstehen. – mavilein

+0

Ich habe versucht, ein einfaches Beispiel auf die Geige http://jsfiddle.net/AhgBh/ zu setzen. Es wird nicht funktionieren, aber es zeigt ein bisschen mehr Präzision unserer Struktur. Willkommen für Eingaben! – kraftwer1

Verwandte Themen