2017-01-25 5 views
-1

매개 변수를 받고 [selectize.js] [1]을 호출하는 함수가 있습니다.다른 매개 변수로 selectize를 호출하려고했지만 이전 값으로 실행됩니다.

처음에는 param이 1과 같아서 myFunc이라고 부릅니다. 작동하는 데이터는 서버에서 가져온 것으로서 드롭 다운 목록이 표시됩니다.

하지만 나중에 내가 다른 parammyFunc를 호출의 2.

을 가정 해 봅시다 그리고 myFunc 2 수신 콘솔에서 볼 수 있지만, load 기능과 아약스 success 기능 로그 (1) 콘솔로, 데이터가 온다 param 값이 나는 parammyFunc 2 처음으로 동일 호출하는 경우 1.

을했다 경우 param 값이 내가 시도 2.

경우로, 데이터가 온다 load 및 ajax success 기능을 모두 cache: false에 추가하십시오. 그러나 load 함수는 이전 param 값을 계속 사용합니다. 여기

function myFunc(param) { 
    console.log(param); 
    $("#select-control").selectize({ 
     valueField: 'id', 
     labelField: 'name', 
     searchField: 'name', 
     options: [], 
     create: false, 
     render: { 
      option: function(item, escape) { 
       return '<div>' + escape(item.name) + '</div>'; 
      } 
     }, 
     score: function(search) { 
      return function(item) { 
       return 1; 
      } 
     }, 
     load: function (query, callback) { 
      console.log("selectize loading data"); 
      console.log(param); 
      this.clearOptions(); 
      $.ajax({ 
       url: "/api/some/end/point", 
       type: 'GET', 
       data: { 
        q: query, 
        some_param: param 
       }, 
       error: function() { 
        callback(); 
       }, 
       success: function (res) { 
        console.log(res); 
        console.log(param); 
        callback(JSON.parse(res)); 
       }, 
      }); 
     } 
    }); 
} 

난 그냥 param 글로벌 변수를 추가 콘솔

23378 // myFunc received this value as param 
selectize loading data // load function is called 
23378 // param value inside load function 
{/* here is the response, which contains data */} 
23378 // param value inside ajax success function 
19476 // myFunc received new value 
selectize loading data // load function is called 
23378 // but the load function uses the first param value, it should be 19476 here 
{/* the same old response, param didn't change*/} 
23378 // and ajax success function also uses the old value, it also should be 19476 
+0

당신이 모든 로그의 인쇄 화면을하십시오 넣을 수 몰라? 만약 내가 올바른 생각이라면, 첫 번째'콘솔'은 콘솔에서 값을 올린 –

+0

로드 기능 내에서'콘솔 '과 다른 것을 출력 할 수 없다. 처음으로'console'은 처음에는 다른 것을 출력하지 않지만'myFunc'를 두 번 호출 할 때 출력합니다. – sasha199568

답변

0

에서 로그를 편집하고 나는 그것을 사용합니다. 이 전역 변수없이 작동하지 않는 이유

var globalParam; 

function myFunc(param) { 
    globalParam = param; 

    // ... 
    /* use globalParam instead of param later*/ 
    // ... 
} 

나는