2014-01-05 37 views
1

我正在尝试构建一个带有角度js的多步表单(向导)。使用ui路由器的多个步骤形式(向导)?

据我所知,我必须映射每个步骤到自己的控制器和视图(模板)。但在我看来,如果我这样做,那么在每个步骤视图中定义的模型将仅限于特定控制器的范围。

由于我想提交表单末尾所有步骤中填写的所有数据,我不知道应该如何编码以确保模型在所有步骤之间共享?

回答

1

我想给你的建议是将你的模型暴露给使用service \ 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

嗨Chandermani,所以当你说我不能将这项服务注入到我的控制器时,我应该如何访问控制器内的模型? – mr1031011

+0

对不起,这是一个错字。您可以在控制器中注入此服务:) – Chandermani

+0

谢谢,最后一件事可能与angularjs无关。如果我在我的控制器中分配$ scope.model = WizardService.model,那么如果我的范围上的模型发生变化,那么JS也会自动更改WizardService,或者我应该总是回退? – mr1031011