我是淘汰模板引擎的新手,我遇到了一个问题。
我有一个容器,其中包含带有可点击提示的文本输入。我的目标是在用户单击后使用链接标题更改输入文本。
html代码片段:
<script type="text/html" id="query-input-template">
<input data-bind="value: query" type="search" placeholder="query"></input>
<span>
Example: <span data-bind="template: { name: 'hint-template', data: { hint: hints[0] }}"></span>
or <span data-bind="template: { name: 'hint-template', data: { hint: hints[1] }}"></span>
</span>
</script>
<script type="text/html" id="hint-template">
<a href="#" data-bind="text: hint, click: vm.query.bind($data, hint)"></a>
</script>
<div id="search-container" data-bind="template: { name: 'query-input-template' }"></div>
js代码片段:
viewModel = function() {
var self = this;
self.hints = [ "Test query 1", "Test query 2" ];
self.query = ko.observable();
}
var vm = new viewModel();
ko.applyBindings(vm, document.getElementById('search-container'));
代码笔版本: https ://codepen.io/YungJ/pen/VjpEaq ?editors=1010
这段代码工作正常,我对结果很满意。但我确信它可以被适当地重写。我对第二个模板的“vm.query”绑定不满意。我想从上部模板传递视图模型来摆脱这个并获得更干净的query.bind($data, hint)
绑定