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();