我有以下路由器:
Router.map(function() {
this.resource('cart', function() {
// order routes
this.route('shipping');
this.route('checkout');
this.route('payment');
this.route('thanks');
});
});
在路线上,Cart
我有一个cartTotal
计算属性。当路由中的变量shipping
更改时,我想更新它。
我在cart
控制器中的计算属性:
needs: ['cartShipping'],
cartitemsTotal: function() {
// logic
return totalCosts;
}.property('[email protected]', 'controllers.cartShipping.shippingMethod'),
但这给出了一个错误: Error while processing route: cart <app@controller:cart::ember404> needs [ controller:cartShipping ] but it could not be found Error: <app@controller:cart::ember404> needs [ controller:cartShipping ] but it could not be found
知道这里出了什么问题吗?
您不能needs
在子控制器上使用该属性,只能在父控制器上使用。您想使用cart.shipping
控制器,但是如果您的用户在该cart.checkout
路线上怎么办?在这种情况下,cart.shipping
控制器将不会处于活动状态(如果容器尚未实例化它,甚至可能不存在)。
对于Ember.js中的几乎所有内容,您都可以到达层次结构,但几乎永远都无法达到。这是其中一种情况。您可能需要对路线进行重组,以执行所需的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句