javascript - 如何处理 ember.js 模型中的标签

标签 javascript ruby-on-rails json ember.js

我有一个 Ember.js 模型,它基本上只是一个 ID、一个标题、一个正文和标签,其中每个标签都有一个 ID 和一个标题。这是我从 Rails 提供给 Ember 的 JSON:

{"created_at":"2012-02-19T03:28:26Z",
 "body":"Example body",
 "id":1,
 "title":"Example title",
 "updated_at":"2012-02-19T03:28:26Z"
 "tags" : 
     {"id":1,
      "name":"retweet"},
     {"id":2,
      "name":"twitter"},
     {"id":3,
      "name":"social"}
 }

问题 1:如何在 Ember.js 模型中为标签建模?是否应该只有一个包含 JS 标签数组的“标签”字段,或者每个标签应该有一个字段,所以会有 tag1、tag2、tag3 等,其中每个字段都有一个 ID 数组和标题?

问题 2:在我的 Handlebars 模板中,如何使用标签将每个标签链接到 /tags/{{tag.id}}?我不能只使用 <a href="/tags/{{tag.id}}"></a>因为您不能将 Handlebars 值嵌入到这样的属性中,而且我不能使用 {{bindAttr}} 因为您不能将字符串(如/tags/)连接到该值。这给我留下了每个标签的计算属性(这是“正确的方法”, according to this )(因此计算属性“tagurl”只会返回 "/tag/" + tag.id ),但我不确定该怎么做,因为我不确定标签应该如何存储(上面的问题 1)。

最佳答案

在代码中扩展一个 View :

App.tagView = Em.View.extend
     templateName: "tTagView"
     tagURL: (->
          '/tag/" + @get('id')
     ).property()

在你的 Handlebars 上这样做

 {{#each tags}}
      {{view App.tagView content=this}}
 {{/each}}

你需要一个模板

 <script id="tTagView" data-template-name='tTagView' type="text/x-handlebars">
      <a {{bindAttr href="tagURL"}}>{{Name}}</a>
 </script>

这里是所有工作的 fiddle : http://jsfiddle.net/herTY/12/

关于javascript - 如何处理 ember.js 模型中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380622/

相关文章:

javascript - 如何只选择顶部元素文本?

ruby-on-rails - 让 rails url helpers 使用适当的协议(protocol)?

html - 导航栏 - 按钮未居中对齐

json - 从 API react 输出 JSON

php - json编码utf8错误

python - 将选定的 JSON 标签转换为 Pandas 数据框

javascript - JS 函数不更新对象

javascript - 在 MeteorJS 中向在线用户直接发送消息

ruby-on-rails - Postgres 未安装在 Bundler (Ruby on Rails) 中

javascript - Android浏览器中在Canvas上绘画,页面滚动?