2017-06-02 65 views
0

我使用了ngDialog,並且有一個嵌套視圖模式。洞察我的模式我在註冊(狀態)和登錄(登錄)之間切換,所以我需要包含註冊控制器和登錄控制器。我一直在尋找一個解決方案在任何地方,但無法找到任何東西。有人如何做到這一點?如果有人知道ngDialog的解決方案,但對於$模式,請讓我知道。謝謝!!Angular/modal/ngDialog - 如何在嵌套/多個狀態/視圖的模態中使用多個控制器?

$scope.clickToOpen = function() { 
     ngDialog.open({ 
      template: 'js/modal/modal.html', 
      controller: 'SignupCtrl', 
     }); 
    }; 

在代碼上文一切正常找到註冊,因爲我包括它的控制器,但不適合作爲登錄我不知道如何將登錄控制器。另外,如果它的重要性,我會包含更多的代碼 - 只是認爲它對我的問題沒有任何影響。

我也試過是這樣的:

app.config(function ($stateProvider) { 

    $stateProvider.state('activity.modal', { 
    url: 'modal', 
    templateUrl: 'js/modal/modal.html', 
    views: { 
     '[email protected]': { 
     templateUrl: 'js/login/login.html', 
     controller:'LoginCtrl' 
     }, 

     '[email protected]': { 
     templateUrl: 'js/signup/signup.html', 
     controller:'SignupCtrl' 
     } 
    } 
    }); 

}); 

但這並不既不登錄,也不是註冊工作。

回答

1

這個問題有多種解決方案。其中一些比其他的更好,但在一天結束時,它取決於你在尋找什麼樣的UI/UX。

一個對話與合併控制器(可以說是最糟糕的方法)

你可以用一個模板只使用一個對話框,但你必須控制器融合在一起,使新的控制器可以處理登錄和註冊邏輯。

兩個不同的對話框

您可以打開不同ngDialog彈出 - 一個用於登錄,另一個用於註冊。這些將由視圖中的不同按鈕觸發。

例如有兩個按鈕(登錄和註冊),其中登錄按鈕顯示登錄對話框和註冊按鈕註冊對話框。

使用的組件在對話框(可以說是最好的辦法)

你可以一個一個ngDialog實例和模板,你可以使用兩個不同的組件 - 一個用於登錄,一個用於註冊。每個組件都有自己獨立的模板和控制器,因此關注點分離的規則仍然適用。

最後一種方法的附加好處是您可以在網站上的任何位置使用這些組件 - 而不僅僅是ngDialog模板。

+0

感謝您的回答。這兩個不同的對話框是我一開始就做的,因爲它是唯一可行的,但這看起來不太好,所以我刪除了它。我通過賦予模態兩個嵌套視圖併爲每個控制器分配一個不同的控制器來實現它。 – javascripting

+0

這與我使用組件建議的解決方案几乎相同,但使用視圖。目前,組件架構是首選,但在這種情況下,我認爲這不重要。 –

+0

它是一個有點不同的問題,但也許你知道。如何在顯示嵌套視圖時使ngDialog不更改狀態?現在一切正常,但我只希望模態與我目前所在的任何頁面重疊(我可以從多個位置開啓模態),而不會改變網址並將我引導至另一個頁面。我在網上看到的是給網址「^ /」,但它不起作用 – javascripting

相關問題