簡體   English   中英

使用敲除AMD助手來控制ApplyBindings

[英]Controlling Applybindings with knockout amd helpers

我正在使用Knockout AMD Helpers加載具有“ 模塊綁定 ”功能的ViewModel。

通常,當我需要加載遠程數據時,我使用延遲對象來確保僅在ViewModel上所有數據可用后才調用ko.ApplyBindings。

我創建了一個示例jsfiddle,以使用延遲的ajax調用來說明我的問題:

self.initialize = function () {
                    self.name("This is a sample article");
                    self.getArticleTypes(self.articleTypes);
                };

self.getArticleTypes = function (observableArticleTypes) {
                    var fakeData = {
                        delay: 5
                    };
                    $.ajax({
                        async: true,
                        cache: false,
                        type: 'post',
                        url: '/echo/json/',
                        data: fakeData,
                        success: function (data) {
                            observableArticleTypes([{
                                id: 1,
                                articleType: 'Breaking News'
                            }, {
                                id: 2,
                                articleType: 'Weather'
                            }]);

                            console.log("Data loaded from server");

                        }
                    });
                };

如何使用AMD Helpers構造代碼,但是將ApplyBindings延遲到ViewModel上的所有數據准備好了呢?

在這種情況下,applyBindings將已經發生,因此您要么只希望允許可觀察的部分隨數據可用而更新,要么使用ifwithtemplate綁定來控制特定部分。

例如,您可以將區域包裝在以下位置:

<div data-bind="if: articleTypes().length">
    ....
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM