2017-12-19 37 views
0

ComboBox의 버그인지 구현에 오류인지 확실하지 않습니다. ComboBox에 배열의 값을 채 웁니다. ComboBox는 대부분 작동하는 것으로 보입니다. 모든 값이 있고, 기본값이 설정되고 있으며, 제안이 나오고 있습니다. 유일한 문제는 내 마우스로 클릭하여 드롭 다운 옵션을 선택할 수 없다는 것입니다. 화살표 버튼 + Enter를 사용하여 옵션 만 선택할 수 있습니다. 디자인 또는 버그인가?Dojo - dijit/ComboBox - 마우스 선택이 작동하지 않습니다.

는 여기에 템플릿 위젯, 내 HTML의 발췌입니다 :

<td style="width:25%;"><input data-dojo-attach-point="testReports" data-dojo-type="dijit/form/ComboBox"></input></td> 

가 여기 내 자바 스크립트 코드입니다. 나는 콤보 상자를 채우는, 다음 HTML 템플릿에 배치 : 나는 마우스 선택이 작동하도록하기 위해 고려해야 할 다른 아무것도

var reportStore = new Memory(); 
for(i = 0; i < this.parent.reportNames.length; i++){ 
    var reportObject = {}; 
    reportObject.id = i; 
    reportObject.name = this.parent.reportNames[i]; 
    reportStore.put(reportObject); 
} 
this.testReports.set("id", "reportsDropDown"); 
this.testReports.set("name", "reports"); 
this.testReports.set("value", this.parent.reportNames[0]); 
this.testReports.set("store", reportStore); 
this.testReports.set("searchAttr", "name"); 

있습니까?

감사합니다.

답변

0

입력 태그에 onchange 이벤트를 추가 했습니까? 이렇게하면 마우스를 사용하여 변경된 목록을 선택하고 선택해야합니다.

<input data-dojo-attach-point="testReports" data-dojo-type="dijit/form/ComboBox" onchange="processComboChange(this)"></input> 
0

는 나는 다른 방법을 플러그인 정의하는 시도하고 지금 작동하는 것 같군 :

HTML :

<td style="width:25%;"><input data-dojo-attach-point="testReports"></td> 

자바 스크립트 : 나는 것을 파악하고있어

var reportStore = new Memory(); 

for(i = 0; i < this.parent.reportNames.length; i++){ 
    var reportObject = {}; 
    reportObject.id = i; 
    reportObject.name = this.parent.reportNames[i]; 
    reportStore.put(reportObject); 
} 

var comboBox= new ComboBox({ 
    id: "reportsDropDown", 
    name: "reports", 
    value: this.parent.reportNames[0], 
    store: reportStore, 
    searchAttr: "name" 
}, this.testReports).startup(); 

을 내가 시도한 다른 방법은 물건을 적재해야하는 순서를 망쳐 놓는 것이 었습니다. 다른 사람이 더 잘 설명 할 수 있는지 확실하지 않은가요?

0

정확히 어떤 문제가 발생했는지는 알 수 없지만 프로그램 방식과 선언적 방법으로 위젯을 작성했기 때문에 문제가 발생한 것 같습니다. Dojo는 이러한 일에 매우 민감하며 시간이 많이 걸리는 이유에 대해 알아 내려고 노력합니다. 코드와 관련하여 몇 가지 사항을 말씀 드리겠습니다. 선언적으로 위젯을 만들면 js에 설정하지 않고 필요한 속성을 인라인으로 전달할 수 있습니다. 그래서 그 대신 this.testReports.set("id", "reportsDropDown"); 의 당신은 다음과 같은 방법으로 그것을 만들 수 있습니다 :

<input data-dojo-attach-point="testReports" 
     data-dojo-type="dijit/form/ComboBox" 
     data-dojo-props="store: store, searchAttr: name"> 
    </input> 

을하거나 프로그램 제작 선호하는 경우 :

템플릿

<input id="test-reports"></input> 

JS를

var testReports = new ComboBox({ 
     id: "testReports", 
     name: "reports", 
     value: "", 
     store: store, 
     searchAttr: "name" 
    }, "test-reports").startup();  
,

그리고 두 번째 경우에는 요소에 대해 data-dojo-attach-point 속성을 정의 할 필요가없고 참조 대신 요소 ID를 사용합니다. this.someNode

관련 문제