我有一个单页应用程序,该应用程序使用 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/