0

次のように、配列(または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 []
   });
};    

コンポジット内からデータを取得できることはわかっています。しかし、それは根本的な問題に対する答えにはなりません。

4

2 に答える 2