如何销毁角色扮演者以创建新角色?

问题描述

我正在使用caphList开发tizen Web应用程序。我正在使用ajax从api中获取数据,并在获得响应后通过以下代码在caphlist中进行了设置:

// Reset container before set data
$('#sub_cate_list').html("");

$('#sub_cate_list').caphList({
    items : items,template: 'sub-cate-template',containerClass : 'list',direction: 'vertical',initialItemIndex: 0,onFocusItemView: function(context) {
        // Assign inner category index
        SUB_CAT_INDEX = {rowIndex: context.rowIndex,itemIndex: context.itemIndex};                             
    }                       
});

在caphlist中设置数据之前,我正在使用jQuery的 html() 方法重置容器,并且运行良好,但是当我单击另一个类别以加载相同的ui时但是新的类别数据然后会集中在不起作用上。

设置焦点的代码

$.caph.focus.activate();
let controllerProvider = $.caph.focus.controllerProvider.getInstance();
controllerProvider.setDepth(0);         
controllerProvider.focus(0);

Caphlist模板:

<div class="shows_container_list" id="sub_cate_list"></div> <!-- container element -->

            <!-- template view -->
            <script id="sub-cate-template" type="text/template">
                <div class="home_listBox item" focusable data-focusable-initial-focus="<%=(index===0)?true:false%>" data-focusable-depth="1">
                    <div class="shows_innerBox">
                        <div class="shows_Box" data-uri="<%= item.uri %>">
                            <img src="<%= item.image %>">
                            <div class="shows_textlist text_bright"><%= item.text %></div>
                        </div>
                    </div>
                </div>
            </script>

因此,我认为破坏航海家的方法将起作用,但我不知道该如何使用。所以有人可以建议如何使用销毁方法吗?

我想做什么:

我有两个类别:“今天”和“明天”,当我第一次单击“今天”或“明天”时,下一个屏幕上的焦点工作正常,但是回到类别屏幕后,如果我单击“今天”和“明天”,然后在下一个屏幕上关注无法正常工作。

如果有人认为我的做法不正确,请提出建议。

谢谢

解决方法

在模板的第一个div中添加一个data-focusable-name属性:

<div class="home_listbox item" focusable data-focusable-initial-focus="<%=(index===0)?true:false%>" data-focusable-depth="1" data-focusable-name="katty<%= index %>">

然后调用这些方法将重点放在您想要的项目上

controllerProvider.setDepth(1);  // not 0. Actually you might not need to set the depth.
controllerProvider.focus("katty7");

或(使用jQuery)

controllerProvider.setDepth(1);  // not 0. Actually you might not need to set the depth.
controllerProvider.focus($(".home_listbox-item:eq(7)"));

编辑:

尝试以下方法:

this.subCateList = undefined;
$("#sub_cate_list_container").empty();   // Clear the container

this.subCateList = $('#sub_cate_list').caphList({
    items : items,template: 'sub-cate-template',containerClass : 'list',direction: 'vertical',initialItemIndex: 0,onFocusItemView: function(context) {
        // Assign inner category index
        SUB_CAT_INDEX = {rowIndex: context.rowIndex,itemIndex: context.itemIndex};                             
    }                       
});

如果只想更新列表,而不是重新创建它,则可以使用以下方法。我不确定您是否需要同时使用更新方法。

this.subCateList.reload();  
this.subCateList.update();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...