8

私は自分のアプリケーションで ngDialog を使用しており、必要なときにいつでも使用できる一般的な確認モーダルを作成したいと考えています。確認メッセージは異なります。

私の質問:

1- ngDialog 機能を使用してディレクティブを作成することは良い考えですか?また、その設計はどのようなものですか?

2-ngDialogコードのconfirm()とopenConfirm()の違いは何ですか.

前もって感謝します

4

1 に答える 1

20

さて、あなたの質問に答えるために、

1 - ディレクティブを作成し、確認タイプ (送信確認、削除確認など) を渡すと、ディレクティブscopeは指定したタイプに基づいてメッセージをレンダリングする必要があります。typesubmitdelete

2 -openConfirm()アクションを確認することによってのみ閉じることができる ( とは異なり) ngDialog のタイプであるngDialog.open()ため、 のどこかをクリックしてもダイアログを閉じることはできませんDOMconfirm()ダイアログを閉じるために使用するメソッドにすぎません。このメソッドを使用してダイアログを閉じ、モーダルを開いたときに返されたプロミスを解決して<button ng-click="confirm()">Confirm</button>、ダイアログ内で続行できるようにします。

これがあなたを助けたことを願っています

アップデート

openConfirm() エスケープを押すか、ダイアログウィンドウの外側をクリックしても、デフォルトでは閉じないダイアログを開きます。この関数は、ダイアログが閉じられた方法に応じて、解決または拒否される promise を返します。

promise を解決するには、ダイアログを次のようにする必要があります。

ngDialog コントローラを使用

ngDialog.openConfirm({
    template: '<div></div>',
    controller: ['$scope', function($scope) { 
      // Controller logic here
    }]
}).then(function (success) {
    // Success logic here
}, function (error) {
    // Error logic here
});

ディレクティブコントローラー付き

ngDialog.openConfirm({
    template: '<div></div>',
    scope: $scope, // <- ability to use the scopes from directive controller
}).then(function (success) {
    // Success logic here
}, function (error) {
    // Error logic here
});

scope: $scopeダイアログ内を通過する限り、ディレクティブコントローラーを使用できます

これは、タイプの使用方法を示すデモです

index.htmlタイプをからconfirmに切り替えてみてremove、ダイアログの更新されたコンテンツとボタン テキストを確認してください。

于 2015-07-28T08:35:58.637 に答える