gpt4 book ai didi

javascript - 甲骨文JET : Passing asynchronous property to composite

转载 作者:行者123 更新时间:2023-11-28 17:32:54 24 4
gpt4 key购买 nike

我想将数组(或 observableArray)传递给复合体,如下所示:

<add-training-modal id="modal" employees="[[data]]"></add-training-modal>

data通过异步调用在关联的 viewModel 中检索:

self.data = ko.observableArray();
UserFactory.getUsers().then(arr => {
self.data(arr);
})

问题:[[data]]在异步调用完成之前传递给组合。只要 data 就可以了复合 Material 中的内容已更新。然而,事实并非如此。

在复合 View 模型中:

function model(context) {
//...
context.props.then(function (propertyMap) {
self.properties = propertyMap;
console.log(propertyMap.employees); // is empty []

setTimeout(function () {
console.log(propertyMap.employees); // is full [...]
}, 500);
});
}

model.prototype.attached = function(context) {
context.props.then(function (propertyMap) {
console.log(propertyMap.employees); // is empty []
});
};

我知道我可以从复合 Material 中检索数据。但这并不能解决根本问题。

最佳答案

换句话说,组合需要监听更改事件,对吗?添加此代码:

self.composite = context.element;
$(self.composite).on('employees-changed', function (event) {
if (event.detail.updatedFrom === 'external') {
console.log(event.detail.value);
}
});

在最新版本中(我没有亲自测试过):

model.prototype.attached = function(context) {
self.composite = context.element;
self.composite.addEventListener('employeesChanged',function(event){
if (event.detail.updatedFrom === 'external'){
console.log(event.detail.value);
}
});
};

有关更多信息,请查看此博客:https://blogs.oracle.com/groundside/jet-composite-components-v-events

这是有关 Oracle-JET 组合的权威指南。

关于javascript - 甲骨文JET : Passing asynchronous property to composite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com