Ember.js TransionToRoute不钩住模型

Ember.js TransionToRoute不钩住模型,ember.js,ember-data,Ember.js,Ember Data,我在控制器中有一个功能,可以检查是否有问题,使用TransionToRoute更改路由 首先,我使用本地存储适配器创建一个新记录,然后我想更改路由: var i = this.store.createRecord('axisModel', { id: Math.random().toString(32).slice(2).substr(0, 5), //random ID generator uniqueName: item.uniqueName

我在控制器中有一个功能,可以检查是否有问题,使用TransionToRoute更改路由

首先,我使用本地存储适配器创建一个新记录,然后我想更改路由:

 var i = this.store.createRecord('axisModel', {
            id: Math.random().toString(32).slice(2).substr(0, 5), //random ID generator
            uniqueName: item.uniqueName,
            name: item.name,
            hierarchyUniqueName: item.hierarchyUniqueName,
            type: 'filter',
            isMeasure: item.isMeasure,
            orderId: "",
            isActive: true
        });
        i.save();
this.transitionToRoute('filters', item);
过滤器路由代码如下所示:

App.FiltersRoute = Ember.Route.extend({
model:function(params){
    console.log('here');
    return this.store.find('axisModel',params.filters_id);
}
});
但是,当路由更改时,我看不到console.log()的“here”,并且我得到以下错误:

Assertion failed: Error while loading route: TypeError: Object [object Object] has no method 'addArrayObserver'

我认为您正在使用
过滤器
模板中的
每个
视图辅助对象并引用模型,但它是一个对象而不是数组:

{{#each}} ...

因此,您将收到此错误,因为当数组更改时,视图帮助器将尝试向更新的ui添加观察者。但是ember对象没有
addArrayObserver
方法,将抛出此错误

您可以删除每个结果,或者如果希望得到多个结果,请使用
store.filter

this.store.filter('axisModel', function(model) {
  model.get('someProperty') == otherProperty;
});

如果要查询记录数组,则
find
的第二个参数应该是具有查询参数的对象,例如

model: function(params) {
  return this.store.find('axisModel', { filter: params.filters_id });
}

由于您只是传递一个ID,因此您将查询一条记录(具有该ID),并且生成的控制器将是一个ObjectController(而不是ArrayController),当您从您的Ember应用程序内部过渡到路由时,使用
链接到
,该控制器不与
#每个
一起工作,
过渡到
,或
过渡路线
将跳过
模型
挂钩。Ember希望您在转换时将要使用的模型传递到管线中。这就是为什么您没有像预期的那样看到
console.log
语句的原因

另一个可能的问题是,当您称之为:

this.transitionToRoute('filters', item)
您为
'filters'
路线提供了一个项目作为
模型
。但是,如果要点击“重新加载”,并使
模型
钩子开火,则使用以下命令返回集合:

this.store.find('axisModel',params.filters_id)

项目
来自哪里?
this.store.find('axisModel',params.filters_id)