小编Chr*_*ris的帖子

如何清除从先前访问视图填充的observableArray的内容

我有一个单页应用程序,使用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)的页面?

knockout-2.0 knockout.js single-page-application

41
推荐指数
2
解决办法
6万
查看次数

在Durandal子路线中找不到路线错误

当我尝试使用子路由时,我得到"路由未找到".为了覆盖我的基础,这里是如何设计应用程序中的路由.

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

6
推荐指数
1
解决办法
1876
查看次数

如何基于foreach observablearray属性过滤选择列表选项

我有一个foreach使用称为的observablearray CertificateDetailsToShowCertificateDetailsToShow有一个名为的列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:&nbsp;<span class="muted" data-bind="text: LoanNum"></span>&nbsp;(<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)

knockout-2.0 knockout.js

2
推荐指数
1
解决办法
4071
查看次数