2017-09-08 14 views
1

다음은 간단한 코드입니다.블록의 다른 함수에서 정의 블록의 javascript 함수 호출

define ([ 
"dojo/dom", 
"dojo/_base/array", 
"dojo/_base/declare", 
"dgrid/OnDemandGrid", 
"dgrid/Selection", 
"dgrid/Keyboard", 
"dijit/form/Button", 
"dojo/store/Memory", 
"dojo/dom-construct", 
"dojo/string", 
"esri/layers/FeatureLayer", 
"esri/tasks/query", 
"esri/tasks/QueryTask", 
"javascript/myUtilities", 
"javascript/myCSV", 
"javascript/myGrid" 
    ], function ( 
dom,arrayUtils,declare,Grid,Selection,Keyboard,Button,Memory,domConstruct,dojoString,FeatureLayer,Query,QueryTask, myUtilities, myCSV, myGrid) { 
return { 
     initializeParkGrid: function(gridid, gridDiv){ 
          //code is here 
          return app.parkGrid; 
          },  
     initializeTrailGrid: function(gridid, gridDiv){ 
           //code is here 
          return app.trailGrid; 
          }, 

     updateParkGrid: function(){  
           //code is here 

           app.parkGrid.on('.dgrid-row:click', function(event){ 
            initializeTrailGrid(); 
           }); 
          }); 
         }         
     }; 
    }); 

나는 행이 app.parkGrid에서 클릭 할 때마다 initializeTrailGrid() 함수를 호출합니다. 필자가 작성한대로 실행하려고하면 오류 메시지가 나타납니다. initializeTrailGrid은 기능이 아닙니다. 다른 파일의 define 블록에서 initializeTrailGrid()으로 전화하면 정상적으로 작동합니다. 위에 표시된 코드는 myGrid 파일에 있으므로 javascript/myGrid을 정의 목록에 넣고 myGrid.initializeTrailGrid()을 사용하여 호출했지만 작동하지 않습니다. define 블록이 어떻게 구성되어 있는지에 따라이를 수행 할 수있는 방법이 있습니까?

+0

:

Myclass = function() { this.initializeParkGrid = function (gridid, gridDiv) { return app.parkGrid; } } 

다음, 클릭 이벤트, 호출 방법에 ... 클래스를 초기화하는 것을 잊지 마세요. – SLaks

+0

내 자바 스크립트 기술이 제한되어 있습니다. 가져 오는 것은 무엇을 의미합니까? – ponder275

답변

2

이 클래스를 생성하는 것이 좋습니다 : 당신은 그것을 가져올 필요

var myclass = new Myclass(); 

app.parkGrid.on('.dgrid-row:click', function(event){ 
    myclass.initializeParkGrid(a, b); 
});