2016-02-18 32 views
1

我們的角度應用程序有一個流程- step1-step2-step3。在第3步中,可以選擇從第1步開始新的流程。 重要的是,流之間沒有數據混合。 這種流程的最佳設計是什麼? 這些步驟共享數據,所以我懷疑我需要一個控制器,但是如何確保每次迭代都初始化它(我不想寫一個「init」方法)什麼是一步一步重複流動的良好角度設計模式?

回答

1

我會將每一步寫爲指令並通過雙向綁定傳遞整體狀態。狀態將保存在控制器的範圍內,並且在完成流程後返回到第一步時需要重置。

例如,您可以在流程結束時有一個「重新開始」按鈕,從範圍中清除狀態。控制器會看到並立即顯示第一步,不含所有舊數據。如果你使用ngIf,指令將在允許顯示時乾淨地初始化。

示例控制器模板:

<div> 
    <div myflow-step1="yourData" ng-if="!yourData.step || yourData.step == 1"></div> 
    <div myflow-step2="yourData" ng-if="yourData.step == 2"></div> 
    <div myflow-step3="yourData" ng-if="yourData.step == 3"></div> 
</div> 

而且在步驟3「重新開始」按鈕只會做:

$scope.yourData = {}; 
+0

那麼也許3個步驟應該用指令+ ngIf(上包裹包裹)?那樣一切都會自動初始化?我的擔心是手動清理範圍可能會「忘記」清除某些字段... –

+0

如果將整個數據保存在一個範圍對象中,則可以執行$ scope.yourData = {};並且舊數據消失了。沒什麼可忘記的。而且,當ngIf等於false時,指令的內部範圍會自動銷燬。 – positivew

+1

我決定做的是$ route.reload(); 因爲 - 1.它重新加載在$ routeProvider中配置的模板; 2.它創建一個新的範圍(重新加載控制器,初始化和設置「step1」爲主動 - 這正是我想要的)。你怎麼看? –

相關問題