2014-06-22 1 views
0

나는 selectable 값을 관찰 가능 값으로 생성했습니다. 나는 관측 가능 (Observable)을 구독하지만, 선택 입력의 ID를 얻지 못하는 것 같습니다.knockoutjs 구독을 통해 element.id를 얻으십시오

<select data-bind="options: firstName, optionsText: 'name', value: $parents[0].selectCategory, attr: {'id': lastName}"> 
</select> 

self.selectedCategory.subscribe(function(category) { 
    console.log(this); 
    console.log(this.target()); 
}, this); 

나는 선택 요소의 ID를 얻을 수 없다. 나는 (여기에 설정되지 않은) 옵션의 가치와 selectedCategory이 속한 기능을 얻을 수는 있지만 ID를 얻을 수는 없다. jquery.click으로 쉽게이 작업을 수행 할 수 있다고 확신하지만, .subscribe()를 통해이를 수행 할 수 있는지 궁금합니다.

의견이나 의견이 있으십니까?

답변

1

나는 정확하게 당신이 이드의 의미를 잘 모르겠습니다. 그리고 당신의 구속력은 좀 엉망이됩니다. 선택한 각 입력의 ID를 의미하는 경우에, 당신은 당신의 바인딩에 optionsValue를 사용할 수 있습니다

<select data-bind="options: names, optionsText: 'name', optionsValue: 'id', value: selectedName, attr: {'id': lastName}"> 
</select> 

self.names = [ 
     { name: 'Name 1', id: 1}, 
     { name: 'Name 2', id: 2}, 
     { name: 'Name 3', id: 3} 
    ]; 

나는 당신이 심지어 불구하고 추가 attr 정의를 왼쪽 기술적으로 당신이 왜이 일에 더 정교한 수 있습니다 단지 있도록 아무 의미 필요해.

변경에 따라 선택한 각 요소의 id을 얻기에 관심이 있다면 당신은이 방법을 수행 할 수 있습니다

self.selectedName.subscribe(function(name) { 
     console.log(name);   
    }, this); 

또는 물론 당신이 [다른 함수에서] 버튼 클릭에 그것을 얻을 수있는이 방법 :

self.alertName = function(){ 
     alert(self.selectedName());  
    };  

Full Demo.

이 정보가 도움이 되었기를 바랍니다. 이것이 원래 의도 한 것이면 알려주세요.

+0

다이애나, 답변 해 주셔서 감사합니다. 내가 분명하지 않다면 미안하지만, 나는 select 요소의 id를 얻고 싶다. 앞서 말했듯이, 내가 선택한 옵션의 가치를 얻을 수 있습니다. 'attr' 정의는''의 ID를 설정합니다. 이것은 내가 얻고 자하는 것입니다. 선택된 ''의 값을 얻고 싶지는 않지만, 그것이 속한 ''요소의'ID' 속성을 얻고 싶지 않습니다. – Jimbob

+0

왜'console.log (self.lastName);을 사용할 수 없습니까? –