2013-07-11 6 views
5

Ich versuche, eine einfache Verknüpfung zu Google Maps mit einer dynamischen Adresse in das href-Feld eingefügt. Ich habe den folgenden Code ausprobiert und tonnenweise herumgeschummelt, ohne Glück. Wie interpolieren Sie eine dynamische Ember-Zeichenfolge in einem Lenker-Referenzfeld?Ember Interpolation in einem href-Tag in Lenker Vorlage

Ich benutze Glut, Schienen und Lenker. Ich weiß, wie man bindAttr verwendet, wenn ich die gesamte URL mit meinem Modell gespeichert hatte, aber ich habe nur die Adresse. Die Google-URL mit jedem Modell zu erstellen, schien unnötig, wenn ich es nur einmal in der Ansicht aufrufen könnte.

<h1>{{name}}</h1> 
<div> 
    <p><a {{bindAttr href='http://maps.com/?1=address'}}>{{address}}</a></p> 
</div> 

<h1>{{name}}</h1> 
<div> 
    <p><a href='http://maps.google.com/?q={{address}}'>{{address}}</a></p> 
</div> 

Was ich Fix it verwendet

App.Location = DS.Model.extend(
    name: DS.attr('string', defaultValue: "") 
    address: DS.attr('string', defaultValue: "") 
    fullAddress: (-> 
    "http://maps.google.com/?q=#{@get('address')}" 
).property('address') 
) 

Antwort

8

Sie so etwas tun könnte, sehen demo.

Grundsätzlich könnten Sie eine Mixin für allgemeine Eigenschaften erstellen und dann in Ihren Modellen mischen. Zum Beispiel:

App.BaseModel = Ember.Mixin.create({ 
    base: 'http://maps.google.com/?q=', 
    fullAddress: function(){ 
    return this.get('base') + this.get('address'); 
    }.property('address') 
}); 

App.MyModel = DS.Model.extend(App.BaseModel, { 
    name: DS.attr('string'), 
    address: DS.attr('string') 
}); 

So könnte man in Sie verwenden Sie es später Vorlagen wie folgt aus:

{{#each model}} 
<h1>{{name}}</h1> 
    <div> 
    <p><a {{bind-attr href='fullAddress'}}>{{address}}</a></p> 
    </div> 
{{/each}} 

Hoffe, es hilft.

+0

Danke !! Du hast mich definitiv in die richtige Richtung gelenkt. Das ist das erste Mal, dass ich all diese Technologien zusammen benutze. Rails, Ruby, Ember, Coffeescript, Lenker, also bin ich immer noch ein wenig verwirrt, wie man alles strukturiert, aber ich reparierte es mit dem Code, den ich der Frage hinzugefügt habe. Danke noch einmal! –

+0

@GarrettBoone Ich bin froh, dass ich helfen konnte, fühlen Sie sich frei, mehr Frage hier auf SO zu posten, ich bin sicher, dass sie erfolgreich beantwortet werden :) – intuitivepixel

+0

@inuitivepixel, dass jsbin nicht funktioniert. (nicht die Vorlage rendern) –