Oracle JET:淘汰赛未更新变量

时间:2018-09-10 17:52:00

标签: knockout.js observable knockout-3.0 oracle-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函数,该按钮应该会打开一个对话框,并且我希望输入文本框的初始值为我在data-bind属性中声明的jobDetails()。faReleaseVersion。不幸的是,当我正在运行此代码jobDetails()作为null传递,因此id = releaseVersion的输入文本的初始值为null。可能是什么问题?有指针吗?

2 个答案:

答案 0 :(得分:0)

oj-input-text(显然)是一个输入字段,因此它可以读取和写入绑定到的可观察对象。

但是您的代码未将其绑定到可观察的对象。实际上,您甚至不应该对OJET组件使用data-bind,因为它们已经在内部使用。您必须使用每个组件的自定义属性。


首先,您需要为oj-input-text创建一个单独的可观察对象。为什么?因为如果无法观察到,则不会向HTML触发任何更改事件,以指示faReleaseVersion的值已被更新。

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

接下来,使用value的{​​{1}}属性将其绑定到oj-input-text

faReleaseVersion

这里是Cookbook链接,显示了如何使用<oj-input-text id="releaseVersion" value="{{faReleaseVersion}}"></oj-input-text> ,这里是documentation

答案 1 :(得分:0)

将变量绑定到可观察的位置,然后敲除就开始观察

self.testVariable = ko.observable();