2015-02-09 3 views
1

У меня есть объект в области $ scope, который диктует «следующий экран» для приложения после обновления (я нахожусь в виде многоуровневой новой формы) и когда каждый экран отображается, я хочу показать текущий и все последующие экраны на боковой панели - легко вернуться к пользователю, чтобы внести изменения, но не позволяя ему пропустить шаги, не отображая будущие экраны.

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

Мой вопрос - в контроллере текущего экрана, как мне изменить статус на true И сделать вид распознающим изменение? (LoDash доступен)

Это частичный $ scope.screens (массив объектов):

[ 
    { 
    "id": 13, 
    "loantype_id": 2, 
    "screen": "farmer", 
    "label": "Farmer", 
    "sort_order": 1, 
    "status": 1 
    }, 
    { 
    "id": 14, 
    "loantype_id": 2, 
    "screen": "applicant", 
    "label": "Applicant", 
    "sort_order": 2, 
    "status": 0 
    }, 
    { 
    "id": 15, 
    "loantype_id": 2, 
    "screen": "quests", 
    "label": "Questions", 
    "sort_order": 3, 
    "status": 0 
    }, 
    { 
    "id": 16, 
    "loantype_id": 2, 
    "screen": "references", 
    "label": "References", 
    "sort_order": 4, 
    "status": 0 
    } 
] 

Я двигаюсь от экрана фермера к экрану заявителя, и я могу предупредить «заявитель «из URL-адреса состояния - это значение должно быть использовано для« поиска »нужного объекта в $ scope.screens, но я не могу это понять.

Это подходящая часть ApplicantController - alert (currScreen) == 'Заявитель':

(function(){ 
    'use strict'; 
    angular 
     .module('ARM') 
     .controller('NewApplicantController', function(
     $scope, $state, $stateParams, Loan, 
     AppFactory, ApplicantsFactory 
    ){ 
     var curr = $state.current.url; 
     var currScreen = curr.substring(1,curr.length); 
     alert(currScreen); 

     $scope.loan = Loan.data.data[0]; 

     if($scope.loan.applicant_id) { 
      ApplicantsFactory.getApplicant($scope.loan.applicant_id) 
      .then(function success(rsp) { 
       $scope.applicant = rsp.data.data; 
       $scope.applicant.entity_type_id = '2'; 
      }); 
     } else { 
      $scope.applicant = { entity_type_id: '2' }; 
     } // end if 

     $scope.createApplicant = function() { 
      ApplicantsFactory.createApplicant($scope.applicant) 
      .then(function(rsp){ 
       AppFactory.patchIt('/loans/', $stateParams.loanID, {applicant_id: rsp.data.message}); 
       AppFactory.moveToNextNewLoanScreen(currScreen, $stateParams); 
      }); 
     }; 
     }); 
})(); 
+0

Где именно он разрушается. Является ли 'currScreen' неопределенным? –

+0

no, currScreen (в данном случае) оповещения 'заявитель' ... Я просто не знаю КАК обратиться к объекту, чтобы изменить статус на 1 ... Я пробовал $ scope.screens [0] .currScreen.status = 1: $ scope. $ Apply(), но это не сработало – jgravois

ответ

2

Возможно ли это потому, что на основе массива экранов, на которые вы ссылались выше, «currScreen» не определен? Под этим я подразумеваю '$ scope.screens [0] .currScreen' не существует, поэтому вы не можете назначить '$ scope.screens [0] .currScreen.status = 1'.

+0

, возможно, возможно, но я не знаю, как изменить этот статус ... есть ли лучший способ его настроить (надеюсь, не потому, что жесткая часть - то есть динамическая навигация - отлично работает. Мне просто нужен способ «включить» текущий экран в навигации. – jgravois

+2

Если вы говорите о добавлении currScreen к своей модели, то возможны два пути. вы создаете экземпляр $ scope.screens, чтобы иметь свойство currScreen в каждом объекте или вместо выполнения '$ scope.screens [0] .currScreen.status = 1' you do '$ scope.screens [0] .currScreen = {status: 1}» –

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