我正在开发一个传统的Ember应用程序,它有一些时髦的设置,我正在尝试清理并遵循惯例。一个问题是,我们返回一个包含数组的对象,而不是从索引路由的model
钩子返回一个数组。所以,我将model
包裹在ArrayProxy
setupController
中,如下所示:
setupController: (controller, model) ->
model_proxy = Ember.ArrayProxy.create({content: model.get('item')})
controller.set('content', model_proxy)
这实际上有效(即{AJ}承诺解析且content
加载数据时model.item
更新。问题是,我在控制器中还需要model
上的另一个属性。 model
具有needsLoader
属性,该属性初始化为true,然后在promise解析时设置为false。我们正在使用它来向用户显示一个微调器,同时从服务器获取数据。
所以,我的问题是:我有什么方法可以代理needsLoader
中的ArrayProxy
吗?
我尝试过的一个解决方案是以非标准方式将原始model
挂钩到控制器上:
setupController: (controller, model) ->
....
controller.set('_model', model)
....
这使我可以通过调用needsLoader
从控制器访问@get('_model.needsLoader')
。它可以工作,但我想在路由器中完成所有脏工作,这样我的控制器中就可以像往常一样调用model
。
谢谢!
答案 0 :(得分:1)
不确定是否有意义,但您可以创建自己的类型:
var myArrayProxy = Ember.ArrayProxy.extend({
countPlusTen: function(){
return this.get('content.length') + 10;
}.property('content.length')
});
var instance = myArrayProxy.create({
content: [1,2,3]
});
console.log(instance.get('countPlusTen'));