ということは、別のイベントか何かが邪魔してるんじゃないでしょうか…
全体が解らないので何とも言えません…
もちろんコンソールにエラーなどは出ていないのですよね?
取りあえず、提示されているコードを下記のように使用した場合は、動いているようです。
解決の糸口になれば良いのですが…
(提示できない部分を直接編集してるから、コピペでは動かないかも…)
View (ViewPort):
PHP Code:
Ext.define('Sample.view.Viewport', {
extend: 'Ext.container.Viewport',
alias: 'widget.Sample-viewport',
id: 'mainView',
layout: 'auto',
autoScroll: true,
config: {
buttonSample: null,
treePanelObj: null
},
initComponent: function() {
var me = this;
console.log(Ext.getClassName(me) + '#initComponent');
me.setButtonSample(Ext.create('Ext.button.Button',{
renderTo: 'buttonSample',
text: 'ボタン',
name: 'sample',
action: 'sampleButtonAction'
}));
Ext.define('TreeData', {
extend : 'Ext.data.Model',
fields : [ {
name : "id"
}, {
name : "text"
}, {
name : "leaf"
}, {
name : "iconCls"
}, {
name : "base_cd"
}, {
name : "sc_kbn"
}, {
name : 'disabled',
type : 'bool',
defaultValue : false
} ]
});
var store = Ext.create('Ext.data.TreeStore', {
model : 'TreeData',
proxy : {
type : 'ajax',
url : './a.json',
actionMethods : {
create : 'POST',
read : 'POST',
update : 'POST',
destroy : 'POST'
}
},
root : {
text : 'Root',
id : 'rootNode',
expanded : false
}
});
// ツリーパネルオブジェクト生成
var treePanelObj = new Ext.tree.Panel({
renderTo : 'tree',
id : 'tree',
animate : true,
autoScroll : true,
useArrows : true,
rootVisible : false,
border : false,
height: 50,
// width: 2000,
store : store,
// plugins : [ {
// ptype : 'nodedisabled'
// } ]
});
me.setTreePanelObj(treePanelObj);
// スーパークラスを呼び出す(引数は同じものを渡す)
me.callParent(arguments);
// config の getter・setter を作るのに必須
me.initConfig(arguments);
},
selectNode: function(){
var me = this;
console.log(Ext.getClassName(me) + '#afterInit');
me.getTreePanelObj().getSelectionModel().clearSelections();
me.getTreePanelObj().selectPath('/rootNode/a/c',null,null,function(a,b){console.log(a);console.log(b);});
},
});
Control:
PHP Code:
Ext.define('Sample.controller.Control', {
extend: 'Ext.app.Controller',
refs: [
{ref: 'viewport', selector: 'Sample-viewport'}
],
init: function(app) {
var me = this;
console.log(Ext.getClassName(me) + '#init');
me.control({
'button[action=sampleButtonAction]': {
click: me.selectNodeAction
}
});
// スーパークラスを呼び出す(引数は同じものを渡す)
me.callParent(arguments);
},
selectNodeAction: function(buttonObject, event, eOpts){
var me = this;
console.log(Ext.getClassName(me) + '#selectNodeAction');
me.getViewport().selectNode();
},
});
HTML(Formの中に下記2行を適当に配置しただけです):
PHP Code:
<div id="buttonSample"></div>
<div id="tree"></div>
JSON(提示が無かったので適当に作りました。):
PHP Code:
{id:"rootNode",
"children": [
{
id:"a",
text:"a",
leaf:"a",
iconCls:"a",
base_cd:"a",
sc_kbn:"a",
disabled:"false",
children:[{
id:"b",
text:"b",
leaf:"b",
iconCls:"b",
base_cd:"b",
sc_kbn:"b",
disabled:"false"
}, {
id:"c",
text:"c",
leaf:"c",
iconCls:"c",
base_cd:"c",
sc_kbn:"c",
disabled:"false"
}, {
id:"d",
text:"d",
leaf:"d",
iconCls:"d",
base_cd:"d",
sc_kbn:"d",
disabled:"false"
}, {
id:"e",
text:"e",
leaf:"e",
iconCls:"e",
base_cd:"e",
sc_kbn:"e",
disabled:"false"
}, {
id:"f",
text:"f",
leaf:"f",
iconCls:"f",
base_cd:"f",
sc_kbn:"f",
disabled:"false"
}, {
id:"g",
text:"g",
leaf:"g",
iconCls:"g",
base_cd:"g",
sc_kbn:"g",
disabled:"false"
}]
}
]}