次のように、配列(またはobservableArray)をコンポジットに渡したい:
<add-training-modal id="modal" employees="[[data]]"></add-training-modal>
data
非同期呼び出しを介して、関連付けられたビューモデル内で取得されます。
self.data = ko.observableArray();
UserFactory.getUsers().then(arr => {
self.data(arr);
})
問題:[[data]]
非同期呼び出しが終了する前にコンポジットに渡されます。data
コンポジットが更新されている限り、それは問題ありません。しかし、そうではありません。
複合ビューモデルでは:
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 []
});
};
コンポジット内からデータを取得できることはわかっています。しかし、それは根本的な問題に対する答えにはなりません。