1

假设我有一个Car和一个User DS.Models,并且想在他们的个人资料页面上向用户展示他们可能喜欢驾驶的汽车列表,所以在user模板中我将contentBinding一个简单的设置Bootstrap.Forms.SelectsuggestedCars.

在 user.coffee 类文件中(因为这是业务逻辑):

App.User = DS.Model.extend
     ...
  suggestedCars: (-> App.Car.all().filter(-> true)).property('UNKNOWN')

对于我的一生,我无法弄清楚要在 UNKNOWN 中放入什么才能让它按应有的方式工作。我需要找出绑定到所有汽车的关键路径。通过 Ember 资源倾泻而出的所有明智尝试都让我无法追索。将 UNKNOWN 设置为 fullName 允许我通过更改配置文件上的用户名来查看过滤器代码是否按预期工作,只要更改名称,选择就会填充所有汽车。

作为一个有趣的旁注,即使从系统中删除这个微不足道的过滤器也必须随着加载的时间而改变一些东西,以便仅从 all() 和一个空属性填充选择,但是当然当 Cars 是时不会改变改变了。

显然,我想做一些比“真实”更复杂的过滤器(而且我也不是真正处理汽车),但我已将问题简化为基本问题,以找出问题所在,并且似乎是这条该死的关键路径,或者也许是我幼稚的做法。

非常感谢您的时间、关注和帮助。

4

1 回答 1

1

@colymba 基本上回答了评论中的问题。即使是业务逻辑,这种计算属性也可能最适合控制器。Ember 的 MVC 和一般的前端 MVC 在这方面与服务器端不同。

你需要这样的东西

App.CarsController = Ember.ArrayController.extend({
  needs: ['users'],
  usersBinding: 'controllers.users',

  suggestedCars: function() {
    // return something based on both users and cars
  }.property('users.@each', 'model.@each')
});
于 2013-07-02T11:06:57.150 回答