嵌套资源出现问题
Trouble with nested resources
我是Ember的新手,我觉得我用这个练习应用程序吃得太多了,但我打算学习。如果是这样的话,我可能在概念上完全偏离了,可以为我的用例提供一个更好的结构。
我的(缩写)路由看起来或多或少是这样的:
Router.map(function() {
this.resource('shops', { path: '/' }, function() {
this.resource('shop', { path: ':shop_id' }, function() {
this.resource('items', { path: 'admin'}, function() {
});
});
});
});
其目的是,用户将选择一家商店,然后获得一个带有复选框的所有可能商品的列表,在那里他可以决定哪些在该商店可用,哪些没有。到目前为止,我只是想显示所有项目的列表,但它不起作用。然而,商店的名单-没有任何问题。
网址:
/
工作。
model
是所有的商店。网址:
/1
工作。
model
是ID为1的商店。网址:
/1/admin
处理路由时出错:items.index断言失败:ArrayProxy需要一个Array或Ember.ArrayProxy,但您传递了对象
shops
和items
控制器相同:
// app/controllers/shops.js
// app/controllers/items.js
export default Ember.ArrayController.extend({});
路线几乎相同:
// app/routes/shops/index.js
export default Ember.Route.extend({
model: function() {
return this.store.find('shop');
}
});
// app/routes/items/index.js
export default Ember.Route.extend({
model: function() {
return this.store.find('item');
}
});
shop
控制器不存在,shop.index
路由微不足道:
// app/routes/shop/index.js
export default Ember.Route.extend({});
什么东西?
编辑:JSBin
JSBin的问题很简单。在你原来帖子中的简化路由器中,你有this.resource('items', { path: 'admin'}, function() {});
由于您将一个函数传递给this.resource
,这意味着它有一个隐式嵌套的this.route('index')
。
但是,在您的JSBin中,您有this.resource('items, { path: 'admin' });
由于在这种情况下没有传递函数,因此不存在隐式index
路由。
解决方案是添加函数位,或者将App.ItemsIndexRoute
重命名为App.ItemsRoute
,将data-template-name="items/index"
重命名为data-template-name="items"
。
JSBin与后者:http://emberjs.jsbin.com/dahuge/2/edit?html,js
p.S.我还准备了一个只使用this.route
的JSBin,它目前对未来更友好:http://jsbin.com/mifamu/9/edit?html,js,输出
在IRC上由一个非常有用的"锁"回答。一些问题仍然存在,但这个JSBin已经回答了一个大问题。我最大的困惑是误解了URL是如何处理的,以及link-to
助手的角色是什么。我最需要的是ItemsController
:的变化
App.ItemsController = Ember.ArrayController.extend({
needs: ['shop'],
shop: Ember.computed.alias('controllers.shop.model')
});
这将使shop
可访问,并且模板中说items
而不是model
的错误。
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- 角度资源注入的问题
- 嵌套资源出现问题
- 处理从 CDN 加载资源失败或缓慢的问题
- 加载资源时出现 OpenTok JS 连接超时问题
- 解决与烧瓶的跨源资源共享问题
- 解决跨站点脚本资源共享问题
- js警报框中的资源文件变量给出字符串ASCII代码问题
- IE10和跨域资源共享(CORS)问题与图像/画布
- 创建Windows 8资源管理器模拟-鼠标选择问题
- Chrome浏览器问题:“加载资源:net::ERR_CONNECTION_TIMED_OUT”失败
- JSF2.0 URL问题-来自JavaScript资源中的图像
- 跨域资源共享的XMLHttpRequest问题
- SharePoint;JavaScript-;用资源管理器打开”;问题
- Dynamics CRM使用Javascript/HTML Web资源创建记录时出现问题