Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vadio

[Resolvido] Lógica JS

Recommended Posts

olá pessoal estou tentando criar uma função js mas to com um pouco de dificuldade.

 

Essa função abaixo seria meu módulo Album q seria responsável pelas ações do objeto Album.

 

no caso eu chamo esse modulo em outra pág e chamo

 

MyAlbumModule.setForm();

MyAlbumModule.setGrid();

 

beleza até ae ele funciona de boa..

 

Mas eu quero que atualize o grid assim q for inserido um novo valor pelo form.

 

a função responsável pelo ajax q irá incluir os dados é a private.put(); e é nela q eu preciso chamar a setGrid mas não estou conseguindo fazer isso

 

abaixo segue meu code.. desde já obrigado

 

define([
   "dojo/dom",
   "dojo/domReady",

   "dojo/My/MyFormModule",
   "dojo/My/MyGridModule",

   "dojo/_base/xhr"

], function(dom, domReady, MyFormModule, MyGridModule, Ajax){

   var private = {
       /**
        * private.put
        *
        * Função irá fazer a validação do formulário e realizar a edição ou criação de um novo album
        *
        * @return void
        */
       put: function(){
           var form = MyFormModule.getForm();
           if(form.validate()){
               var Album = {
                   id: dom.byId('form_album_id').value,
                   nome: dom.byId('form_album_nome').value
               }

               Ajax.post({
                   form: 'acme_albumbundle_album',
                   url: '/put/',

                   load: function(data){
                       alert(data);

                      setG
                   },
                   error: function(){

                   }
               })
           }else return false;
       },
       remove:function(id){

       }


   }

   return {

       /**
        * SetForm
        *
        * Responsavel pela criação do formulário
        *
        * @return void
        */
       setForm: function(){
           var form = {
               id : 'form',
               props : {
                   method: 'post',
                   id: 'acme_albumbundle_album',
                   name: 'acme_albumbundle_album'
               },
               field : [
                   {
                       dojoType: 'TextBox',
                       props: {
                           id: 'form_album_id',
                           name: 'id',
                           type: 'hidden',
                           required : false
                       }
                   },
                   {
                       dojoType: 'ValidationTextBox',
                       props: {
                           id: 'form_album_nome',
                           name: 'nome',
                           type: 'text',
                           required : true,
                           missingMessage: MyFormModule.getMissingMessage()
                       }
                   },
                   {
                       dojoType: 'Button',

                       props: {
                           id: 'form_album_submit',
                           onClick: function(){ private.put(); },
                           name: 'submit',
                           label: 'enviar'
                       }

                   }

               ]
           }

           MyFormModule.setForm(form);
       },

       setGrid: function(){
           var params = {
               target: "/list",
               idAttribute: "id",
               srcNodeRef: "grid",
               structure : [
                   {name:"Id", field:"id", width: "50px"},
                   {name:"Nome", field:"nome", width: "200px"}
               ]
           }
           MyGridModule.setGrid(params);

       }
   };
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

var Obj = (function() {

   var _private = {

           doThings : function() {
               return pub.sayHello();
           }

       },
       pub = {

           sayHello : function() {
               console.log( 'Hello o/' );
           },

           init : function() {
               console.log( 'init' );
               _private.doThings();
           }

       };

   return pub;
}());

Obj.init();

//init
//Hello o/

 

Existem outras formas de se conseguir isso, mas esta é uma delas. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

JCMais

 

você não intendeu mto bem oque eu precisava... mas dexa pra lá já consegui...

 

 

define([
   "dojo/dom",
   "dojo/domReady",

   "dojo/My/MyFormModule",
   "dojo/My/MyGridModule",

   "dojo/_base/xhr"

], function(dom, domReady, MyFormModule, MyGridModule, Ajax){
   var private = {
       /**
        * private.put
        *
        * Função irá fazer a validação do formulário e realizar a edição ou criação de um novo album
        *
        * @return {String/Boolean}
        */
       put: function(){
           var form = MyFormModule.getForm();
           if(form.validate()){
               Ajax.post({
                   form: 'acme_albumbundle_album',
                   url: '/put/',
                   load: function(data){
                       if(data == 'sucess'){
                           grid = dom.byId('grid');
                           grid.innerHTML = '';
                           private.setGrid();
                           alert(data);
                       }
                   },
                   error: function(){
                   }
               })
           }else return false;
       },
       /**
        * remove
        *
        * Responsavel remoção de um determinado album
        *
        * @return void
        */
       remove:function(id){

       },
       /**
        * SetForm
        *
        * Responsavel pela criação do formulário
        *
        * @return void
        */
       setForm: function(){
           var form = {
               id : 'form',
               props : {
                   method: 'post',
                   id: 'acme_albumbundle_album',
                   name: 'acme_albumbundle_album'
               },
               field : [
                   {
                       dojoType: 'TextBox',
                       props: {
                           id: 'form_album_id',
                           name: 'id',
                           type: 'hidden',
                           required : false
                       }
                   },
                   {
                       dojoType: 'ValidationTextBox',
                       props: {
                           id: 'form_album_nome',
                           name: 'nome',
                           type: 'text',
                           required : true,
                           missingMessage: MyFormModule.getMissingMessage()
                       }
                   },
                   {
                       dojoType: 'Button',
                       props: {
                           id: 'form_album_submit',
                           onClick: function(){ private.put(); },
                           name: 'submit',
                           label: 'enviar'
                       }
                   }
               ]
           }
           MyFormModule.setForm(form);
       },
       /**
        * SetGrid
        *
        * Responsavel pela criação do datagrid
        *
        * @return void
        */
       setGrid: function(){
           var params = {
               target: "/list",
               idAttribute: "id",
               srcNodeRef: "grid",
               structure : [
                   {name:"Id", field:"id", width: "50px"},
                   {name:"Nome", field:"nome", width: "200px"}
               ]
           }
           MyGridModule.setGrid(params);
       }
   }
   return {
       setForm: private.setForm,
       setGrid: private.setGrid
   };
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade, o que você fez é quase igual ao que eu indiquei, porém usando apenas um objeto, private.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.