Как value.bind параметр функции из цикла repeat.for? - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно предварительно выбрать значение из раскрывающегося списка в шаблоне Aurelia repeat.for html. Я просто не могу понять, как передать переменную field в функцию get getValue (field) . Я хочу передать его из данных repeat.for = "field of fields". Может быть, это невозможно из-за некоторого поведения привязки, или мне нужно использовать какой-то особый синтаксис, например, value.bind = "getValue ( $ field )". Я благодарен за любую помощь или подсказку, где я мог бы искать. Я попробовал несколько документов aurelia и поисковую машину безуспешно. Или намек на то, что вопрос задан неправильно.

view.html

<div repeat.for="field of fields">
    <select class="form-control" value.bind="getValue(field)">
        <option value="0">-</option>
        <option repeat.for="connection of connections" model.bind="connection.field.value">...</option>
    </select>
</div>

view.js

@computedFrom('fragmentedData')
get getValue(field) {
    // if field is available in fragmentedData, return value, else 0 for empty option
}

1 Ответ

0 голосов
/ 25 октября 2019

Я решил проблему с контейнером массива, где хранятся соединения. В функции активации view.js инициализируйте массив, например:

async activate(config)
    this.fields = // request for all fields
    this.fragmentedData = // request for fragmentedDate, which are an overlap of fields
    this.storedConnections = []
    for (let index = 0; index < this.fragmentedData.length; index++) {
        this.storedConnections[index] = this.getConnectionValue(
            this.fragmentedData[index]
        );
    }
}

getConnectionValue(fragmentedDataEntry) {
    for (let index = 0; index < this.fields.length; index++) {
        // check equality and return value if given
    }
    return 0;
}

Теперь мы можем использовать value.bind в виде view.html ($ index - это автоматическое значение в повторении. для определяется методом repeat.for = "field of fields"):

<select class="form-control" value.bind="storedConnections[$index]">

Тем не менее может быть интересно, если есть синтаксис для передачи параметров, как в исходном вопросе. Этот трюк как-то обходной путь, но он делает свою работу. Для сохранения и обновления кэшированных массивов нужно просто отреагировать на события изменений.

...