Ui路由器,ng重复和Ui状态

Ui-router, ng-repeat and ui state

本文关键字:Ui 状态 ng 路由器      更新时间:2023-09-26

我正在开发一个应用程序,在创建资源后,我需要将当前用户重定向到不同的状态。

事实上,我有一个需求列表,我需要显示或创建一个基于该需求的报价。

这是视图代码:

<div class="landing-diags">
  <div class="current-projects">
    <div class="row project-summary" ng-repeat="demand in landingdiag.demandsList">
      <div class="col-md-2 project-block first-block {{project.projectType}}">
        <p class="project-strong">{{demand.user.firstname}} {{demand.user.lastname}}</p>
      </div>
      <div class="col-md-2 project-block">
        <p class="project-strong">{{demand.creationDate | date:"dd/MM/yyyy"}}</p>
      </div>
      <div class="col-md-4">
      </div>
      <div class="col-md-2">
        <div ng-if="!demand.quotation">
          <button ng-click="landingdiag.createQuotation(demand)" class="btn btn-primary pull-right bar-btn">Create</button>
        </div>
        <div ng-if="demand.quotation">
          <button ui-sref="app.state.concerned({id: demand._id})" class="btn btn-primary pull-right bar-btn">Show</button>
        </div>
      </div>
    </div>
  </div>
</div>

这是隐含的控制器方法:

createQuotation (demand) {
    this.DemandsService.createQuotation(demand).$promise.then((response) => {
      this.redirectToQuote(demand);
    });
  }
redirectToQuote (demand) {
  this.$state.transitionTo('app.state.concerned', {id: demand._id});
}

问题

我的问题是,在创建报价时,我从未被重定向。如果我控制台记录redirectToQuote方法,我会在其中传递。所以我的问题似乎出在$state.go调用上。

然而,当我尝试在"显示"按钮上使用redirectToQuote方法直接重定向时,如下所示:

<div ng-if="demand.quotation">
  <button ng-click="landingdiag.redirectToQuote(demand)" class="btn btn-primary pull-right bar-btn">Accéder au devis</button>
</div>

我被很好地重定向到相关状态

我关心createQuotation()中的this.redirectToQuote,它被then()作为回调调用。因此this对象肯定是而不是您的控制器。

看看todd中的第一个代码片段:https://toddmotto.com/resolve-promises-in-angular-routes/他正在使用绑定。

你也可以看看https://github.com/getify/You-Dont-Know-JS/tree/master/this%20%26%20object%20prototypes来自了不起的凯尔·辛普森或比我短:http://blog.monkey-development.com/javascript/java/2015/12/18/javascript-this.html