5

我正在尝试创建一个指向谷歌地图的简单链接,并将动态地址插入到 href 字段中。我已经尝试了下面的代码以及大量其他没有运气的乱七八糟的东西。如何在车把 href 字段中插入动态 ember 字符串?

我正在使用余烬、导轨和车把。如果我将整个 url 与我的模型一起存储但我只有地址,我知道如何使用 bindAttr。如果我可以在视图中调用一次,那么将每个模型的 google url 放在似乎是不必要的。

<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>

我用来修复它的东西

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')
)
4

1 回答 1

8

你可以做这样的事情,见demo

基本上,您可以Mixin为公共属性创建一个,然后将其混合到您的模型中。例如:

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')
});

因此,您以后可以在模板中使用它,如下所示:

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

希望能帮助到你。

于 2013-07-11T13:28:52.113 回答