Durandal:view和viewModel仍然存在于堆内存中

时间:2014-09-09 11:36:41

标签: knockout.js durandal single-page-application

我正在使用durandalknockout开展大型SPA项目。

我们正面临内存泄漏问题。

通常我们在一个页面中,我们需要转到下一页。

浏览器堆在我们转到下一页时被清除,反之亦然。

在我们的SPA路由中,我们需要清除当前页面大小(内存)。

durandal撰写绑定有什么方法吗?

1 个答案:

答案 0 :(得分:0)

<!-- HTML Page Templates -->

    <article class="main-user-page">
        <div data-bind="compose: {model: '/viewmodel/viewLoginUser',view:'view/viewLoginUser'}">

        </div>
    </article >

    <article class="main-user-list-page">
        <div data-bind="compose: {model: '/viewmodel/user/viewUserList',view:'view/user/viewUserList'}">

        </div>
    </article >

    <article class="user-list-page">
        <div data-bind="forEach: userList">
            <span data-bind="Name"></span>
            <span data-bind="email"></span>
            <span data-bind="Role"></span>
        </div>
    </article >
<code>
<pre>
/*we are using Durandal for routing and composeing template 
  all files have same Structure 
*/
function define(['services/utilities', 'durandal/app', 'durandal/system', 'services/logger', 'config', 'services/datacontext','services/bindingHandler'],
    function (util, app, system, logger, config, datacontext) {
    var userList = ko.observableArray([]);

    var userObj = ko.observable();
    function activate(){
        return datacontext.getUserList().then(result){
            userList(result);
        }
    }
    function deactivate(){
        userList.removeAll();
    }
    return {
        userList: userList,
        userObj: userObj
    }
});

</pre>

</code>