2015-12-28 3 views
1

Я разрабатываю приложение, в котором мне нужно перенаправить текущего пользователя в другое состояние после создания ressource.Ui-router, ng-repeat и ui state

На самом деле, у меня есть список требований, и мне нужно показать или создать цитату, основанную на этом требовании.

Вот код вид:

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

я м хорошо перенаправлены соответствующему государству

+0

если вы используете 'state.go' вместо' state.transitionTo' это то же самое? – koox00

+0

Внутри вы обещаете функцию(), которую вы указываете на объект обещания, а не на контроллер с this.redirectToQuote (спрос). – Sharko

ответ

1

Я обеспокоен this.redirectToQuote в пределах createQuotation(), который называется then() в качестве обратного вызова. Таким образом, объект определенно будет не быть вашим контроллером.

Посмотрите на первый фрагмент кода из 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 с удивительным Kyle Simpson или короче от себя: http://blog.monkey-development.com/javascript/java/2015/12/18/javascript-this.html

+0

Функции стрелок с ES6 связывают «этот» контекст –

+0

ok thx. не знал, что – ChrisY

+0

может создать плункер для вашей проблемы? – ChrisY

Смежные вопросы