KnockoutJS: параметризация привязки данных - PullRequest
0 голосов
/ 31 октября 2019

Я хочу использовать переменную для привязки данных в моем элементе ввода. Вот что я пробовал:

<!--  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: работает: она используется в качестве метки. Однако использование «$ data.dataBind» никогда не оценивается, оно просто остается строкой. Как я могу получить привязку данных входного элемента для параметризации таким образом? Спасибо.

1 Ответ

0 голосов
/ 01 ноября 2019

Исходя из моего опыта, я считаю, что это невозможно, так как вы пытаетесь достичь этого. Чтобы сделать это правильно, вы можете создать пользовательский компонент, чтобы вы могли контролировать то, что происходит, основываясь на переданном объекте / param

Прямо сейчас, чтобы заставить его работать как можно быстрее, вы можете изменить свой 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">

На каждой итерации любой вход будет обрабатываться и связываться, в зависимости от флага объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...