使用 Asp.net MVC,我有两种观点:
第一种观点:
<div data-role="listview" data-theme="g" id="subcategorieslistview">
<ul data-bind="template: { name: 'subcategory-template', foreach: subcategories }" id="subcategories">
<script type="text/html" id="subcategory-template">
<li data-role="button" data-icon="arrow-r" data-iconpos="right">
<a data-bind="attr : { title : name, categoryid : categoryId, lazyloaddescriptor : lazyLoadDescriptor}"><label data-bind="text: name"></label></a>
</li>
</script>
</ul>
<script type="text/javascript">
$(document).one("pageinit", function () {
<!-- Ajax load of view model --->
</script>
第二种观点:
<div data-role="listview" data-theme="g" id="archivecontainerslistview">
<ul data-bind="template: { name: 'archivecontainers-template', foreach: archivecontainers }" id="archivecontainers">
<script type="text/html" id="archivecontainers-template">
<li data-role="button" data-icon="arrow-r" data-iconpos="right">
<span data-bind="text: name"></span>
<span data-bind="text: synopsis" class="ui-li-count"></span>
</li>
</script>
</ul>
<script type="text/javascript">
$(document).one("pageinit", function () {
<!-- Ajax load of view model --->
</script>
当我进入第一个视图时,模板工作正常。然后我转到第二个视图,模板再次按预期工作。
但是,当我点击后退按钮返回第一个视图时,我在 knockout.js 中收到错误消息:
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: synopsis is not defined;
字段概要在第二个视图上,通过检查 DOM,我看到两个页面都加载到了我期望从 DOM 中删除第二个页面的位置(不确定错误是否阻止了第二个页面从 DOM 中删除)。
似乎因为当第一页被激活时第二页在 DOM 中,即使没有显示第二页,绑定似乎也在第二页中启动。不确定这是否正确。
Jquery mobile 或 KnockOut 中是否有任何东西可以以某种方式从第二页中删除绑定,以便我可以避免此错误?