바인딩 시스템에는 input + datalist에 대한 특별한 논리가 없습니다. 그것은 input.delegate
바인딩에 쉽게 추가 할 수 있습니다 :
https://gist.run/?id=dc040a0087aa8a99a5f2dc0fc721dca3
app.html
<template>
<input type="text" list="myDatalist" input.delegate="selectedValue = findOption($event.target.value)" />
<datalist id="myDatalist">
<option repeat.for="option of options">${option.name}</option>
</datalist>
<pre style="margin-top: 100px"><code>${selectedValue}</code></pre>
</template>
이
export class App {
selectedValue = null;
options = [ { id: 1, name: 'one' }, { id: 2, name: 'two' } ];
findOption = value => this.options.find(x => x.name === value);
}
사용자가 무엇을 입력 무료입니다 app.js 그들은 원하는 내용, 심지어는 제안과 일치하지 않는 datalist 그래서 그것을 계획해야합니다.
고맙습니다. 제레미. 하지만 한 가지만 보여주고 모델을 다른 모델과 바인딩 할 수있는 방법은 없습니다. 우리가 구축하고있는 응용 프로그램에서 문제의 'name'속성은 때로는 커질 수 있으므로 이름을 일치시켜 검색하는 것을 피하고 싶습니다 ... 데이터 목록이 사용하기에 적절한 요소가 아닐 수도 있습니다. , 우리의 경우 ... –
예에서'selectedValue'는 객체 (옵션 중 하나)가 할당됩니다. 입력 값 (문자열)을 특정 옵션 객체에 매핑하는 메커니즘을 찾아야합니다. 내 예제에서 일치하는 이름을 가진 옵션을 찾은 함수를 만들었습니다. 내가 아는이 방법은 없어. datalist 요소는 이벤트를 발생시키지 않으며 입력 요소의 입력/변경 이벤트는 데이터 목록 옵션이 선택되었을 때 표준 데이터 입력과 비교하여 알려주지 않습니다. –
감사합니다. –