2016-06-20 1 views
0

드롭 다운에 대한 자동 완성 값을 설정하는 키 값을 얻으려고합니다. 사용자는 "#currentSelectedLevel"필드에 "LOAN"을 입력하고 jQuery는 모든 ".episysFieldName"필드에 loansFields의 키를 채 웁니다.밑줄의 _.keys 함수는 배열의 키 값이 아닌 키의 numermic 인덱스 만 반환합니다.

if($("#currentSelectedLevel").val()=="LOAN"){     
    $(".levelFieldName").autocomplete('option', 'source', _.keys(loanFields));} 


var loanFields = [ 

    {"BALANCE": "MONEY"}, 
    {"OPENDATE": "DATE"}, 
    {"CLOSEDATE": "DATE"} 
]; 

경고를 보낼 때 방금 값의 색인을 얻습니다. [0,1,2]. "BALANCE", "OPENDATE", "CLOSEDATE"를 반환해야합니다.

alert(_.keys(loanFields)); 

배열에서 문자열을 사용할 때 잘 작동하는 jQuery 코드가 있습니다.

참고 : 개체/키 값 쌍을 사용하기 시작한 이유는 앞으로 필드 유형 및 기타 속성을 알아야하기 때문입니다. 내 문제는 내가 배열 내에서 객체를 구조화하는 방법이라고 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다.

+1

일반 개체를'_.keys'에 전달해야합니다. '0','1','2'는 배열 키, 배열의 인덱스입니다. – undefined

+0

'_.flatten (_. map (loanFields, _.keys))'는'[ "BALANCE", "OPENDATE", "CLOSEDATE"]'를 반환해야합니다. 코드 스 니펫을 읽기가 어렵다면 ['_.chain'] (http://underscorejs.org/#chain) 메소드를 사용할 수도 있습니다 :'_.chain (loanFields) .map (loanFields, _.keys) .latten(). value()' – undefined

+0

네이티브 js :'loanFields.map (function (obj) {(var k in obj) return k;})'(IE 9+) 또는 밑줄'_.map()'. –

답변

0

나는 이것을 다른 방법으로 이해할 수있었습니다. 희망이 내 대답은 다른 사람을 도와줍니다.

개체 배열을 만들었습니다.

var loanFields = [ 

    {name: "BALANCE", 
    type: "MONEY" 
    }, 
    {name: "OPENDATE", 
    type: "DATE" 
    }, 
    {name: "CLOSEDATE", 
    type: "DATE" 
    } 
]; 

그런 다음 이름 속성을 얻고 배열에 할당하고, 자동 완성 값으로 할당 할 jQuery를 해당를 반환 할 _.propertyOf 기능을 사용했다.

function getFieldNamesFromArray(fieldNameArray){ 
    var fieldNames = []; 

    // use underscore.js to get just name property value 
    for (var i = 0; i < fieldNameArray.length; i++) { 
     fieldNames.push(_.propertyOf(fieldNameArray[i])('name')); 
    } 
    return fieldNames; 

} 

그리고 다음을 드롭 다운에 지정하십시오.

if($("#currentSelectedLevel").val()=="LOAN"){     
       $(".levelFieldName").autocomplete('option', 'source', getFieldNamesFromArray(loanFields));} 
관련 문제