我开发了一个应用程序,我需要在创建资源后将当前用户重定向到不同的状态。
实际上,我有一个需求列表,我需要根据需求显示或创建报价。
这是视图代码:
<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>
我已被重定向到相关州
答案 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