Oracle JET: нокаут не обновляет переменную

У меня есть следующий оракул Jet и нокаут HTML-файл

<oj-dialog style="display:none;width: 600px;" id="addNewTag" title='Tag New Build' cancel-behavior='icon'>
        <div slot="body">
            <div class="oj-form-layout">
                <div class="oj-form oj-sm-odd-cols-12 oj-md-odd-cols-4 oj-md-labels-inline oj-form-cols-labels-inline oj-form-cols-max2">
                    <div class="oj-flex">
                        <div class="oj-flex-item">
                            <oj-label for="releaseVersion">Release Version</oj-label>
                        </div>  
                        <div class="oj-flex-item">
                            <oj-input-text id="releaseVersion" data-bind="attr: {value: jobDetails().faReleaseVersion}"></oj-input-text>
                        </div>  

У меня есть следующий фрагмент файла JS

       self.addTagsToBuild = function (data) {
            self.jobDetails(data);
                $('#addNewTag').ojDialog('open');}

Поэтому в основном я вызываю функцию addTagsToBuild по нажатию кнопки, которая должна открыть диалоговое окно, и я хочу, чтобы начальное значение входного текстового поля было jobDetails(). FaReleaseVersion, которое я объявил в атрибуте привязки данных. К сожалению, когда я запускаю это Код jobDetails () передается как null, поэтому начальное значение входного текста с id=releaseVersion равно null. В чем может быть проблема? Есть указатели?

1 ответ

Решение

oj-input-text является (очевидно) полем ввода, и поэтому оно читает и записывает наблюдаемую информацию, с которой вы ее связываете.

Но ваш код не привязывает его к наблюдаемому. На самом деле, вы даже не должны использовать data-bind для компонентов OJET, потому что они уже используются внутри компании. Вы должны использовать пользовательские свойства каждого компонента.


Во-первых, вам нужно создать отдельную наблюдаемую для oj-input-text, Зачем? Потому что, если он не доступен для наблюдения, то событие HTML не будет запущено, чтобы указать, что значение faReleaseVersion был обновлен

self.faReleaseVersion = ko.observable();
self.addTagsToBuild = function (data) {
        self.jobDetails(data);
        self.faReleaseVersion(data.faReleaseVersion);
        $('#addNewTag').ojDialog('open');}

Далее используйте value собственностью oj-input-text привязать это к faReleaseVersion,

<oj-input-text id="releaseVersion" value="{{faReleaseVersion}}"></oj-input-text>

Вот ссылка на Поваренную книгу, которая показывает, как использовать oj-input-textи вот документация.

Свяжите свою переменную с наблюдаемой, затем начинает наблюдаться нокаут

self.testVariable = ko.observable();
Другие вопросы по тегам