Ui-router,ng-repeat和ui state

时间:2015-12-28 09:46:42

标签: javascript angularjs

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

实际上,我有一个需求列表,我需要根据需求显示或创建报价。

这是视图代码:

<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方法直接重定向到“show”按钮时,如下所示:

<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>

我已被重定向到相关州

1 个答案:

答案 0 :(得分:1)

我担心this.redirectToQuote内的createQuotation()then()称为回调。因此,this对象肯定会成为您的控制者。

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

你也可以从真棒凯尔辛普森那里看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