Ember.js Ember js pre 4-路由器未解析链接上的id单击
我有一个帐户列表,然后我有一个查看链接来详细查看帐户,这就是帐户路径。当我点击查看链接时,(guid)在通过路由器时不会更新,它只会更新URL,但似乎不会传递到代码中 当我刷新浏览器时,(guid)会被传送到路由器。。。由于某种原因,它无法解决 我不使用余烬数据,但将在未来使用它 以下是我的“帐户”模板代码和“查看”链接: My controller.show是我发送上下文以调用脚本以显示帐户详细信息的地方 所以我只需要视图每次都执行正确的accountguid,然后调用show(context)方法 谢谢 这是我的旧路由器代码,工作100%。当我点击一个链接时,它解析了:accountguid,当我刷新浏览器时,它也做了同样的事情。我没有问题,一切都正常Ember.js Ember js pre 4-路由器未解析链接上的id单击,ember.js,Ember.js,我有一个帐户列表,然后我有一个查看链接来详细查看帐户,这就是帐户路径。当我点击查看链接时,(guid)在通过路由器时不会更新,它只会更新URL,但似乎不会传递到代码中 当我刷新浏览器时,(guid)会被传送到路由器。。。由于某种原因,它无法解决 我不使用余烬数据,但将在未来使用它 以下是我的“帐户”模板代码和“查看”链接: My controller.show是我发送上下文以调用脚本以显示帐户详细信息的地方 所以我只需要视图每次都执行正确的accountguid,然后调用show(context
// //Accounts
// accounts: Ember.Route.extend({
// route: '/accounts',
// index: Ember.Route.extend({
// route: '/',
// connectOutlets: function (router) {
// router.get('applicationController').connectOutlet('accounts');
// router.get('accountsController').set('searchfilter','ALL');
// router.get('accountsController').search();
// }
// }),
// view: Ember.Route.extend({
// route: '/:accountguid',
// connectOutlets: function (router, account) {
// router.get('applicationController').connectOutlet('account', account);
// router.get('accountController').show(account);
// //router.get('accountController').connectOutlet('eventloghistory','eventloghistory');
// }
// })
// }),
将路由器映射更改为以下内容,它应该可以工作
App.Router.map(function() {
this.resource("accounts", function(){
this.resource('account',{path:':account_id'});
});
});
我用下面的代码解决了我的问题。我现在可以刷新浏览器,并且可以单击链接,它将把当前使用的:accountguid传递给show()方法
请向我们展示您的AccountsController和AccountController背后的代码。如果您提供一个包含整个构造的JSFIDLE,这将非常有用 总的来说,你可能没有意识到新事物的流动。以下是两种情况下发生的情况: 1.您可以通过设置URL(例如/account/5)导航到AccountRoute。 1.1. AccountRoute的“model”钩子被调用
model: function(params) {
return your model here...
}
使用params={accountguid:5}。因为您没有使用ember数据,所以应该实现这个钩子并初始化并返回模型。
1.2. 使用AccountController和模型挂钩返回的模型调用setupController挂钩。没有背后的代码
controller.show(controller);
现在还不太清楚它的目的是什么,但是你可能应该做一些类似的事情
setupController: function(controller, model) {
this._super(controller, model);
controller.set('content', model);
controller.show(model);
}
如您所见,通过不实现模型钩子,URL保持正确,但路由不知道如何构建所需的模型资源
p.p.如果以上这些都没有任何帮助,这可能是您的问题:我不明白当我的上下文为:accountguid时为什么会是:account\u id。。。当我使用您的代码单击查看链接时,我现在得到/trunk/web/#/accounts/undefined。我迷路了。这是惯例,然后您的帐户路由处理程序将自动解析/#/accounts/1。如果你想从免费布线中获益,那就是:)。
model: function(params) {
return your model here...
}
controller.show(controller);
setupController: function(controller, model) {
this._super(controller, model);
controller.set('content', model);
controller.show(model);
}