2015-06-25 1 views
1

У меня есть две кнопки html в моей jsp. Один - это Add, а другой - Remove. Теперь Если нажата кнопка мыши, будет отображаться один диалог подтверждения доджо. При нажатии кнопки «ОК» в диалоговом окне будет выполняться функция «Добавить или удалить функциональность». И этот Dojo Dialog присутствует на одной из родительских jsp-страниц, которые будут повторно использоваться другими страницами jsp, где присутствует функция Add or Remove functionlity. Также необходимо изменить кнопку «Добавить/Удалить», нажав на подтверждающее сообщение. Ex. для «Добавить» сообщение должно быть «Вы хотите добавить», для удаления сообщения «Вы хотите удалить». Я могу установить сообщение динамически в диалоговом окне DOJO Cinfirm, но не в состоянии установить функцию обратного вызова onExecute, т.е. когда Ok будет нажат в диалоге. Ниже идентификатора кода.Динамически Установить функцию обратного вызова onExecute в DOJO Confirm Dialog

NB: Я использую Dojo 1.10 библиотеки

Confirm Dialog Код:

require(["dijit/ConfirmDialog", "dojo/domReady!"], function(ConfirmDialog){ 
    myDialog = new ConfirmDialog({ 
     title: "GCLDW - Confirm Dialog", 
     content: "", 
     style: "width: 300px;", 
     onExecute:function(){ 
      removeCustomer(); 
     } 
    }); 
}); 

HTML Кнопка Код:

<button type="button" id="removeCustomerButton" 
     onclick="myDialog.set('content', 'Do you want to remove the selected item ?<br><br>');myDialog.show();"> 
           <SPAN class=grey><EM><s:message 
            code="customer.removeCustomer" text="" /></EM> 
           </SPAN> 
</button> 

<button type="button" id="addCustomerButton" 
     onclick="myDialog.set('content', 'Do you want to Add the selected item ?<br><br>');myDialog.show();"> 
           <SPAN class=grey><EM><s:message 
            code="customer.addCustomer" text=""/></EM> 
           </SPAN> 
</button> 

Теперь как установить ОпЕхесийе функции обратного вызова в зависимости при нажатии кнопки либо это будет addCustomer(), либо removeCustomer(), и любая страница, использующая этот диалог, будет иметь свой собственный имп лексика этих двух методов.

ответ

1

Просто установите блок onExecute так же, как вы настраиваете контент.

Также предлагается код с кодом JS от HTML.

Здесь идет работа-вокруг-

HTML code-

<button type="button" id="removeCustomerButton"> 
     <SPAN class=grey><EM>Remove</EM></SPAN> 
</button> 

<button type="button" id="addCustomerButton"> 
     <SPAN class=grey><EM>Add</EM></SPAN> 
</button> 

& DOJO-

require(["dijit/ConfirmDialog", "dojo/domReady!"], 
      function(ConfirmDialog){ 
       var myDialog = new ConfirmDialog({ 
        title: "GCLDW - Confirm Dialog", 
        content: "", 
        style: "width: 300px;" 
       }); 

       dojo.query('#removeCustomerButton').onclick(function() { 
        myDialog.set('content', 'Do you want to remove the selected item ?<br><br>'); 
        myDialog.set('onExecute', function(){removeCustomer()}); // cant call it directly- must wrap within a function 
        myDialog.show(); 
       }); 

       dojo.query('#addCustomerButton').onclick(function() { 
        myDialog.set('content', 'Do you want to Add the selected item ?<br><br>'); 
        myDialog.set('onExecute', function(){addCustomer()}); // cant call it directly- must wrap within a function 
        myDialog.show(); 
       }); 


      }); 


    function removeCustomer(){ 
     console.log("removeCustomer called on execute"); 
    } 

    function addCustomer(){ 
     console.log("addCustomer called on execute"); 
    } 
+0

Позвольте мне знать, если вам нужен jsfiddle ссылку RUN- выше фрагмента кода. –

+1

Спасибо, Dude .. это сработало :) – Sambuddha

0

В /dojo-release-1.10.4 -src/dijit/_DialogMixin.js, говорится в комментариях :

execute: function(/*Object*/ /*===== formContents =====*/){ 
// summary: 
//  Callback when the user hits the submit button. 
//  Override this method to handle Dialog execution. 

Я реализовал ConfirmDialog так:

var confirmDialog = new ConfirmDialog({ 
    title: core.confirm 
}); 
confirmDialog.startup(); 

function confirmAction(text, callbackFn) { 
    confirmDialog.set("execute", callbackFn); 
    confirmDialog.set("content", text); 
    confirmDialog.show(); 
} 

и назвали его следующим образом:

lib.confirmAction(core.areyousure, function() { 
    markedForDeletion.forEach(function (node) { 
     // Do deletion 
    }); 
}); 
Смежные вопросы