Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember js pre 4-路由器未解析链接上的id单击_Ember.js - Fatal编程技术网

Ember.js Ember js pre 4-路由器未解析链接上的id单击

Ember.js Ember js pre 4-路由器未解析链接上的id单击,ember.js,Ember.js,我有一个帐户列表,然后我有一个查看链接来详细查看帐户,这就是帐户路径。当我点击查看链接时,(guid)在通过路由器时不会更新,它只会更新URL,但似乎不会传递到代码中 当我刷新浏览器时,(guid)会被传送到路由器。。。由于某种原因,它无法解决 我不使用余烬数据,但将在未来使用它 以下是我的“帐户”模板代码和“查看”链接: My controller.show是我发送上下文以调用脚本以显示帐户详细信息的地方 所以我只需要视图每次都执行正确的accountguid,然后调用show(context

我有一个帐户列表,然后我有一个查看链接来详细查看帐户,这就是帐户路径。当我点击查看链接时,(guid)在通过路由器时不会更新,它只会更新URL,但似乎不会传递到代码中

当我刷新浏览器时,(guid)会被传送到路由器。。。由于某种原因,它无法解决

我不使用余烬数据,但将在未来使用它

以下是我的“帐户”模板代码和“查看”链接:

My controller.show是我发送上下文以调用脚本以显示帐户详细信息的地方

所以我只需要视图每次都执行正确的accountguid,然后调用show(context)方法

谢谢

这是我的旧路由器代码,工作100%。当我点击一个链接时,它解析了:accountguid,当我刷新浏览器时,它也做了同样的事情。我没有问题,一切都正常

//         //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保持正确,但路由不知道如何构建所需的模型资源

  • 您可以通过linkTo呼叫转换到路线

    {{{链接到帐户accountdata}}视图{{/linkTo}

  • 在这里,linkTo希望accountdata是路由的完整帐户模型。这意味着它可能不会只携带部分数据,例如id(请阅读此说明:)。 2.1. AccountRoute的模型钩子未调用。AccountRoute模型属性设置为传递给linkTo的对象(在本例中为“accountdata”)。 2.2. 使用AccountController和accountdata对象调用setupController。 如果accountdata对象不完整,最好在此处创建一个完整的实例,并将其设置为控制器

    可以想象,如果accountdata类似于{id:5,accountname:“John”,accounttypestatus:“A”,…},那么在单击linkTo之后,URL将正确更新为/account/5,但是帐户模板将接收accountdata,而不是实际的帐户


    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);
    }