我有一个单页应用程序,该应用程序使用 knockout 进行数据绑定(bind)。我的单页应用程序中的CAApproval.html View 在 View 模型代码中有一个名为AllCertificates的observablearray。它在页面上填充良好。当您通过单击页面的navigation.html部分中的链接离开 View ,然后返回到CAApproval页面时,先前访问的值仍在AllCertificates observableArray中,因此将显示在CAApproval View 中。

每当用户返回使用该observablearray的CAApproval页面时,我都需要清除AllCertificates observablearray的内容,以便如果用户离开该页面并返回,则observablearray的内容为null,因此不会在其上显示任何数据。屏幕。这是我的 View 模型代码的重点-

define(['services/logger', 'durandal/system', 'durandal/plugins/router', 'services/CertificateDataService','controls/Lucas'],

       function(logger, system, router, CertificateDataService) {
        var allCertificates = ko.observableArray([]);

    var activate = function () {
            // go get local data, if we have it
            return SelectAllCerts(),SelectMyCerts(), GetCertificateDetails(), GetDDABankNums();
            };
        var vm = {
            activate: activate,
            allCertificates: allCertificates,
    SelectAllCerts: SelectAllCerts

        });

    return vm;

    function SelectAllCerts() {
                return CertificateDataService.getallCertificates(allCertificates);
        }
    });

每次用户访问该页面时,如何清除observablearray的内容(在页面本身中导航时不是,仅当用户来自单独的页面时才清除observablearray)?

最佳答案

只需在您的激活函数中将其设置为等于空(allCertificates([]))即可,每次加载 View 模型时都会调用该函数-

function(logger, system, router, CertificateDataService) {
    var allCertificates = ko.observableArray();

var activate = function () {
    allCertificates([]);
    // go get local data, if we have it
    return SelectAllCerts(),SelectMyCerts(), GetCertificateDetails(), GetDDABankNums();
};

var vm = {
    activate: activate,
    allCertificates: allCertificates,
    SelectAllCerts: SelectAllCerts
});

关于knockout.js - 如何清除以前访问 View 时填充的observableArray的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18638507/

10-11 10:19