Ember过滤器内容并在过滤器中使用控制器方法

时间:2013-10-14 17:22:58

标签: javascript ruby-on-rails ember.js coffeescript emblem.js

我有一个页面,我想要显示不同的用户组。到目前为止,我正在使用以下内容过滤UsersController(ArrayController)中的组。

users_controller.js.coffee:

App.UsersController = Ember.ArrayController.extend
  content: []

  group1: (->
    @get('model').filterProperty('role', "group1")
  ).property('model.@each.type')

  group2: (->
    @get('model').filterProperty('role', "group2")
  ).property('model.@each.type')

  group3: (->
    @get('model').filterProperty('role', "group3")
  ).property('model.@each.type')

我可以使用以下内容遍历用户模板中的每个组(使用Emblem.js)。

users.emblem

.role
  h3 Group 1
  each user in group1
    .segment
      = link-to 'user' user | #{user.first} #{user.last}
      p
        span #{user.shortStory}

.role
  h3 Group 2
  = each user in group2
    .segment
      = link-to 'user' user | #{user.first} #{user.last}
      p
        span #{user.shortStory}

.role
  h3 Group 3
  = each user in group3
    .segment
      = link-to 'user' user | #{user.first} #{user.last}
      p
        span #{user.shortStory}

每个用户的模型都有一个“故事”。在UserController上,我有一个名为shortStory的方法,它将它缩短为100个字符左右的片段。 (见以下代码)

user_controller.js.coffee

App.UserController = Ember.ObjectController.extend
  shortStory: (->
    short = @get('story').substring(0, 100)
    for i in short by - 1
      if i == " "
        break
      else
        short = short.slice( 0, -1)
    short
  ).property('story')

我的问题是我无法让任何用户显示shortStory。我尝试了许多不同的语法,包括:

span= user.shortStory
span #{user.shortStory}
span= shortStory
span= #{user.shortStory}

如果有人知道如何在视图中循环使用UsersController过滤器方法时访问UserController方法会很棒。

我也对第一个过滤数据的其他建议持开放态度。我还很新鲜。

1 个答案:

答案 0 :(得分:0)

找到这个问题的答案。我能够为每个循环添加一个itemController =“user”。这很有效。