2014-11-13 2 views
0

Что такое правильный AngularJS способ сделать это:оплаты Успех Page AngularJS

У меня есть страница, которая принимает некоторую информацию о пользователе и оплаты (через Stripe).

После успешной оплаты мне нужно показать пользователю сообщение, чтобы оно было принято.

Я совмещаю оба представления в одном и том же частичном (я подозреваю, что нет), а затем отображает один в зависимости от состояния некоторой переменной области видимости, то есть $scope.paymentAccepted.

<form ng-if='!paymentAccepted'> 
    ... 
</form> 

<div id='paymentSuccess' ng-if='paymentAccepted'> 
    <p>Your payment has been accepted</p> 
</div> 

или я направить пользователя в другое место с помощью поставщика услуг $location, а затем использовать отдельный вид и контроллер оттуда (я подозреваю, что это так).

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

Каков правильный способ борьбы с этим?

+1

Похоже, вы хотите [создать мастер] (http://scotch.io/tutorials/javascript/angularjs-multi-step-form-using-ui-router) или [использовать модуль мастера] (https: //github.com/mgonto/angular-wizard). – psaxton

+0

То, что вы имеете выше, является довольно правильным способом сделать это. Оба способа на самом деле прекрасны, так как я предполагаю, что это одностраничное приложение. – SoluableNonagon

+0

Первый метод с использованием 'ng-if'? – iamyojimbo

ответ

1

Если вы используете ui-router, у вас может быть дочернее состояние вашего состояния платежа, которое не является URL-адресом. Затем вам просто нужно ввести $ state вашему контроллеру и перейти к соответствующему состоянию при успешном завершении платежа, например. $state.go('home.payment.success').

Редактировать: вы действительно ссылались бы на дочернее состояние как $state.go('.success'), предполагая, что вы переходите от родителя ('home.payment' в этом примере).

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