Oracle JET: нокаут не обновляет переменную - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующий html-файл oracle jet и knockout

<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 () передается как ноль, и поэтому начальное значение входного текста с id = releaseVersion равно нулю. В чем может быть проблема? Есть указатели?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

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

self.testVariable = ko.observable();
0 голосов
/ 11 сентября 2018

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>

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

...