2014-01-05 5 views
1

Я пытаюсь построить многоступенчатую форму (мастер) с угловыми js.Несколько шагов (мастер) с помощью ui-router?

Как я понимаю, я должен сопоставить каждый шаг с собственным контроллером и видом (шаблоном). Но мне кажется, что если я это сделаю, модель, определенная в каждом представлении шага, будет ограничена только областью конкретного контроллера.

Поскольку я хотел бы представить все данные, заполненные всеми шагами в конце формы, интересно, как я должен код, чтобы убедиться, что модели (ы) разделены на всех этапах?

ответ

1

Что я хотел бы предложить вам, это разоблачить вашу модель на каждом шаге с помощью службы \ factory. Каждый шаг может получить доступ к модели, выставленной на заводе, и обновит эту модель. Ваша фабрика будет выглядеть как-то

angular.module("myApp").factory("Wizard",[function() { 
    function WizardModel() { 
     //Model Properties 
     this.title="Test" 
    } 
    var wizardService={}; 
    wizardService.model=new WizardModel(); 
    wizardService.init=function() { 
     //instantiate a new model object wizardService.model={}; 
    } 
    return wizardService; 

}]) 

Теперь вы можете ввести эту услугу в свой контроллер. Перед запуском мастера введите init, чтобы повторно инициализировать модель и использовать свойство model, чтобы получить текущую модель.

+0

привет Чандермани, поэтому, когда вы говорите, что я не могу внедрить эту услугу моему контроллеру, как мне получить доступ к модели внутри контроллера? – mr1031011

+0

К сожалению, это была опечатка. Вы можете ввести эту услугу в контроллер :) – Chandermani

+0

Спасибо, всего лишь 1 последняя вещь, которая может быть не связана с angularjs. Если я назначу в своем контроллере, скажите $ scope.model = WizardService.model, то если модель в моей области изменяется, JS автоматически изменяется на WizardService, или мне всегда нужно возвращаться? – mr1031011

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