Oracle JET:Knockout 不更新变量
Oracle JET: Knockout not updating variable
我有以下 oracle jet 和 knockout 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 我已经在数据绑定中声明了 attribute.Unfotunately 当我 运行 时,此代码 jobDetails() 被作为 null 传递,因此 id=releaseVersion 的输入文本的初始值为 null.What 可能是问题所在?有什么指点吗?
oj-input-text
是(显然)一个输入字段,因此它既可以读取也可以写入您绑定到的可观察对象。
但是您的代码没有将其绑定到可观察对象。事实上,您甚至不应该对 OJET 组件使用 data-bind
,因为它们已经在内部使用。您必须使用每个组件的自定义属性。
首先,您需要为 oj-input-text
创建一个单独的可观察对象。为什么?因为如果它不在 observable 上,则不会向 HTML 触发任何更改事件以指示 faReleaseVersion
的值已更新。
self.faReleaseVersion = ko.observable();
self.addTagsToBuild = function (data) {
self.jobDetails(data);
self.faReleaseVersion(data.faReleaseVersion);
$('#addNewTag').ojDialog('open');}
接下来用oj-input-text
的value
属性绑定到faReleaseVersion
.
<oj-input-text id="releaseVersion" value="{{faReleaseVersion}}"></oj-input-text>
这是 Cookbook link that shows how to use oj-input-text
, and here's the documentation。
将您的变量绑定到一个可观察对象,然后 knockout 开始观察
self.testVariable = ko.observable();
我有以下 oracle jet 和 knockout 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 我已经在数据绑定中声明了 attribute.Unfotunately 当我 运行 时,此代码 jobDetails() 被作为 null 传递,因此 id=releaseVersion 的输入文本的初始值为 null.What 可能是问题所在?有什么指点吗?
oj-input-text
是(显然)一个输入字段,因此它既可以读取也可以写入您绑定到的可观察对象。
但是您的代码没有将其绑定到可观察对象。事实上,您甚至不应该对 OJET 组件使用 data-bind
,因为它们已经在内部使用。您必须使用每个组件的自定义属性。
首先,您需要为 oj-input-text
创建一个单独的可观察对象。为什么?因为如果它不在 observable 上,则不会向 HTML 触发任何更改事件以指示 faReleaseVersion
的值已更新。
self.faReleaseVersion = ko.observable();
self.addTagsToBuild = function (data) {
self.jobDetails(data);
self.faReleaseVersion(data.faReleaseVersion);
$('#addNewTag').ojDialog('open');}
接下来用oj-input-text
的value
属性绑定到faReleaseVersion
.
<oj-input-text id="releaseVersion" value="{{faReleaseVersion}}"></oj-input-text>
这是 Cookbook link that shows how to use oj-input-text
, and here's the documentation。
将您的变量绑定到一个可观察对象,然后 knockout 开始观察
self.testVariable = ko.observable();