2014-01-05 38 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