我有一个单页应用程序,使用knockout进行数据绑定.在我的单页应用程序CAApproval.html视图有一个名为在视图模型代码AllCertificates的observeablearray.它在页面上填充得很好.当您通过点击页面navigation.html部分的链接导航远离视图,然后返回到CAApproval页面上,从previouse参观值仍然在AllCertificates observableArray,因此显示在CAApproval视图.
我需要清除AllCertificates内容observablearray每次用户返回到使用该observablearray的CAApproval页面,这样,如果一个用户离开页面,回来时,observablearray的内容是无效的,因此显示在没有数据屏幕.以下是我的viewmodel代码的亮点 -
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);
}
});
Run Code Online (Sandbox Code Playgroud)
如何清除observablearray的每次内容的用户进入到该页面(而不是在页面中浏览时,仅当用户来自一个单独的页面清除observablearray)的页面?
当我尝试使用子路由时,我得到"路由未找到".为了覆盖我的基础,这里是如何设计应用程序中的路由.
main.js文件包含顶部导航的路由,并且完成为 -
router.map([
{ route: 'LOC', moduleId: 'LOC', title: 'LC', nav: 3 }
]);
Run Code Online (Sandbox Code Playgroud)
我为页面的页脚绘制路线 -
router.map('About', 'About', 'About', false);
router.map('Help', 'Help', 'Help', false);
Run Code Online (Sandbox Code Playgroud)
当用户点击上面创建的"LOC"路线时,左侧导航将显示在该视图上.该视图使用子路由并设置为 -
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: 'viewmodels/',
fromParent: true
}).map([
{ route: '*LCClientSearch', moduleId: 'LCClientSearch', title: 'Create LC', type: 'intro', hash: '#LCClientSearch', nav: true },
{ route: '*LCPending', moduleId: 'LCPending', title: 'Pending LC', type: 'intro', hash: '#LCPending', nav: true }
]).buildNavigationModel();
Run Code Online (Sandbox Code Playgroud)
LOC默认为LCClientSearch路线并最初正确显示,但是,从那一点开始没有任何正确的事情发生.当用户点击LCClientSearh或LCPending时,我收到"找不到路由"错误.
LOC视图 -
<div class="span2 well">
<ul class="nav nav-list">
<li class="nav-header">Availability</li>
<!--ko …Run Code Online (Sandbox Code Playgroud) requirejs knockout.js single-page-application durandal durandal-2.0
我有一个foreach使用称为的observablearray CertificateDetailsToShow。 CertificateDetailsToShow有一个名为的列LoanNum。嵌套在foreach中,我有一个选择列表,该列表使用名为DDABankNums 的observablearray (填充选择列表选项)。它具有称为的属性mLoanNum。我想根据LoanNum两个observablearrays(DDABankNums.mLoanNum = CertificateDetailsToShow.LoanNum)过滤选择列表中显示的内容。我怎样才能做到这一点?
我的查看代码-
<tbody data-bind="foreach: CertificateDetailsToShow">
<tr id="Tr1" style="cursor: pointer">
<td>
<ul style="width: 100%">
<h5 class="muted"><b>Loan: <span class="muted" data-bind="text: LoanNum"></span> (<span data-bind=" text: CurrType"></span>)</b>
<select id="Select1" style="margin-top: 0px; height: 24px; width: 160px !important"
data-bind="options: $parent.DDABankNums, optionsText: 'AccountName', value: $parent.mLoanNum, optionsCaption: $data.LoanNum">
</select>
</h5>
</ul>
</td>
</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)