繁体   English   中英

KnockoutJS:参数化数据绑定

[英]KnockoutJS: parameterize data-bind

我想为输入元素上的数据绑定使用一个变量。 这是我尝试过的:

<!--  ko foreach: [
    {dataBind: {value: thing1}, txt: 'thing Name:'},
    {dataBind: {maskedThing: thing2}, txt: 'thing Amount:'},
    {dataBind: {value: thing3}, txt: 'thing3 Name:'}
] -->
<div class="row">
    <div class="col-sm-12">
        <div class="form-group">
            <label class="control-label pull-left"><span data-bind="text: txt"></span></label>
            <input type="text" class="form-control" data-bind="$data.dataBind">
        </div>
    </div>
</div>
<!-- /ko -->

txt: 变量有效:它用作 label。 但是,“$data.dataBind”的使用永远不会被评估,它只是作为一个字符串保留。 如何以这种方式获取要参数化的输入元素的数据绑定? 谢谢。

根据我的经验,我相信这是不可能的,你试图实现它的方式。 要正确执行此操作,您可以创建一个自定义组件,以便您可以根据传递的对象/参数控制发生的情况

现在,为了让它快速工作,您可以更改 html 并添加一个if绑定来控制渲染的内容,以及对象上的标志,如下所示:

....
    {dataBind: {value: thing1}, txt: 'thing Name:', isMasked: false},
    {dataBind: {maskedThing: thing2}, txt: 'thing Amount:', isMasked: true},
    {dataBind: {value: thing3}, txt: 'thing3 Name:', isMasked: false}
....           
    <input type="text" class="form-control" data-bind="if: isMasked, maskedThing: txt">
    <input type="text" class="form-control" data-bind="ifnot: isMasked, value: txt">

在每次迭代中,任一输入都将被渲染和绑定,具体取决于 object 的标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM