绑定数据同步或异步

Binding data synchronous or asynchronous

绑定函数在knockout.js同步吗? 在此示例中,我会始终在我的 getDeliveryNote 函数中获取数据吗?

function myModel(){
    var self = this;
    self.orders = ko.observable();

    self.selectAndClick = function(data){
        self.orders(data);
        self.getDeliveryNote();
    }

    self.getDeliveryNote(){
        console.log(self.orders()); // would i ALWAYS get the data here?
    }

}

是的,一切都会同步更新。是的,getDeliveryNote 将始终包含您使用 self.orders(data);

设置的数据

你可以考虑在这里使用 ko.computed 这样 deliveryNote 依赖于 orders,那么你根本不需要调用 getDeliveryNote。 例如

self.deliveryNote=ko.computed(function(){
    //...using orders() inside this function will cause 'deliveryNote'
    //...to be reevaluated when the value of 'orders' changes
    //...(ie this function will be called
    //...when orders(data) is called with a different 'data' from last time)

    return orders().deliveryNote() // for example

    });

现在您可以使用 deliveryNote(),它将始终与订单中的内容同步。

那么您也不需要 selectAndClick 函数,因为您将直接绑定到 orders