甲骨文JET:淘汰赛没有更新变量(Oracle JET: Knockout not updating

2019-09-30 01:33发布

我有以下Oracle射流和淘汰赛的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,我想输入文本框的初始值是我在attribute.Unfotunately当我运行此数据绑定宣布jobDetails()。faReleaseVersion代码jobDetails()被作为空传递等输入文本的使用id = releaseVersion初始值是null.What可能是问题? 任何指针?

Answer 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 ,并且这里的文档 。



Answer 2:

您的绑定变量可观察到的那么淘汰赛开始观察

self.testVariable = ko.observable();


文章来源: Oracle JET: Knockout not updating variable