Javascript Ember控制器依赖项解析在直接链接上不起作用?

Javascript Ember控制器依赖项解析在直接链接上不起作用?,javascript,ember.js,Javascript,Ember.js,我在Ember中使用控制器之间的依赖关系解析,只要沿着路径导航,它就可以正常工作。但是,如果您直接链接到具有依赖关系的控制器的视图,则不会出现以下错误消息: needs [ controller:productsDetailIndex ] but it could not be found 有关控制员: Pd.ProductsDetailOrderController = Ember.Controller.extend({ needs: "productsDetailIndex" })

我在Ember中使用控制器之间的依赖关系解析,只要沿着路径导航,它就可以正常工作。但是,如果您直接链接到具有依赖关系的控制器的视图,则不会出现以下错误消息:

needs [ controller:productsDetailIndex ] but it could not be found
有关控制员:

Pd.ProductsDetailOrderController = Ember.Controller.extend({
    needs: "productsDetailIndex"
});
路由器:

Pd.Router.map(function () {

    this.resource('products', { path: '/products' }, function () {
        this.resource('products.detail', { path: '/:product_id' }, function() {
            this.route('order');
        });

    });
});

Pd.ProductsIndexRoute = Ember.Route.extend({
    model: function () {
        return this.store.all('product');
    }
});

Pd.ProductsDetailIndexRoute = Ember.Route.extend({
    model: function(params){
        return this.store.getById('product', params.product_id);
    }
});

Pd.ProductsDetailOrderRoute = Ember.Route.extend({

});

所以,如果我转到
/products/3
并单击打开
/products/3/order
的链接,一切都很好。但是,如果我直接链接到
/products/3/order
,则会出现上述错误。

如果您的逻辑依赖于一个不在其路径中的控制器,则会出现架构问题。在您的特定情况下,资源位于其路径中,因此您应该将索引控制器中的任何逻辑移动到“productsDetail”控制器中

Pd.ProductsDetailRoute = Ember.Route.extend({
    model: function(params){
        return this.store.getById('product', params.product_id);
    }
});

Pd.ProductsDetailIndexRoute = Ember.Route.extend({
    model: function(params){
        return this.modelFor('productDetails');
    }
});

有些人提出了类似的问题。如果productDetailIndex控制器不可用,为什么productsIndex控制器应该可用?因为资源总是生成的。每个资源上的索引路径只是默认路径,当你只点击一个资源时,它仍然会点击资源本身。我举了一个例子,另外你的产品详细信息索引拼写错误,你有
产品