我是Web UI,Dojo,Java等的新手。如果您提到任何高级主题,请提供一些阅读参考。它会有所帮助。
上下文:
我使用 JsonStore 设计了 Gridx ,它为网址带来了目标+ ID。固定的" id"网格加载良好。
我有动态树。它在懒惰加载等方面运行良好。
目标:
基于Tree中给定节点的click(或dblclick)事件,我必须使用数据加载Gridx。因此,如果单击了tree node" id":7,则应该获取JsonStore:/ target / 7并在Gridx中加载。
的问题:
你可以猜到,一开始没有有效的" id"填写JsonStore的财产。在树的单击事件处理程序中,我将在用户单击时获取此值。因此,无法在" ready"中调用gridx.startup()。虽然我已经安排了#34; "准备好"。
因此,我有以下代码片段来处理, <
// this function is called from tree event handler
function LatestTabGridxLoad( id ) {
console.log( "ID %s fetched.", id );
LatestTabGridxStore.idProperty = id;
LatestTabGridx.startup();
LatestTabGridx.body.refresh();
}
ready(function()
{
TabLatestAssetTree.startup();
LatestTabGridx.placeAt( "ReportMiddleTabLatestCenterContainer" );
}
现在,麻烦的是,在第一次加载时,JsonStore GET使用/ target / alone触发,没有任何" id"没有任何用户点击。因此,服务器以405响应。随后,当用户点击时,同样的HTTP GET没有" id"导致HTTP 405.我无法以某种方式提供" id"到GET URL。我已经检查了JSON,它是完美的形状,因为它在独立表中工作,这是声明性(ly)定义。
请建议我通过其" id"链接TREE节点的方法。到Gridx。同时建议,如果我采取的方法是解决这个问题的正确方法。
答案 0 :(得分:0)
问题出在这一行:
console.log(“ID%s fetched。”,id); LatestTabGridxStore.idProperty = id;
'idProperty'是存储ID的JSON属性的名称。每次选择都不会改变。如果没有设置,JsonStore会认为它是'id'。您打算做的是修改商店的目标属性以包含ID。这可以直接完成,看起来像下面这样(详情是特定于应用程序的)
LatestTabGridxStore.target =(someURL)+'/'+ id;
之后,需要使用新商店设置替换gridx的内容。有几种方法可以做到这一点,最简单的方法是销毁当前的gridx实例并将其替换为另一个使用更改的商店的实例。