|
|
|
| Всем привет!
Я java разработчик и js плоховато знаю..(
Решил поюзать extjs ( http://extjs.com/) и собственно возникла проблема с вызовов функции,при клике на линк.
Вот код:
Ext.onReady(function() {
var win;
Ext.QuickTips.init();
var xg = Ext.grid;
var datastore;
var recordType = Ext.data.Record.create([
{name: "id", mapping:"server.serverId", type: "int"},
{name: "serverId", mapping:"server.serverId ", type: "int"},
{name: "serverName", mapping:"server.stpObject.objectName", type: "string"},
{name: "roadName", mapping:"server.stpObject.road.roadName ", type: "string"},
{name: "tnsName", mapping:"server.tnsName", type: "string"},
{name: "dbScheme", mapping:"server.dbScheme", type: "string"},
{name: "oasHost", mapping:"server.oasHost", type: "string"},
{name: "oasPort", mapping:"server.oasPort", type: "int"},
{name: "siteIp", mapping:" server.siteIp", type: "string"},
{name: "virtPath", mapping:"server.virtualPath", type: "string"}]);
datastore = new Ext.data.GroupingStore({
proxy: new Ext.data.DWRProxy(MyService.getServers, true),
reader: new Ext.data.ListRangeReader(
{id:'id', totalProperty:'totalSize'}, recordType),
sortInfo:{field: 'serverName', direction: "ASC"},
groupField:'roadName'
});
datastore.on("load", function () {
});
datastore.load({params:{start:0, limit:22}, arg:['walter', true]});
win = new Ext.Window({
el:'hello-win',
layout:'fit',
width:500,
height:300,
closeAction:'hide',
plain: true,
items: new Ext.TabPanel ({
el: 'hello-tabs',
autoTabs:true,
activeTab:0,
deferredRender:false,
border:false
}),
buttons: [{
text:'Submit',
disabled:true
},{
text: 'Close',
handler: function() {
win.hide();
}
}]
});
win.show();
// pluggable renders
function render3w(value, p, record) {
return String.format(
'<b><a href="http://{1}:{2}/POS/POST?sysinfo" target="_blank">{0}</a></b>' +
'<a href="http://{1}" target="_blank"></a>',
'[WWW]', record.data.oasHost, record.data.oasPort
/*record.data.server.stpObject.objectName , record.data.server.serverId, record.data.record.server.serverId*/);
}
function renderIp(value, p, record) {
return String.format(
'<b><a href="javascript:test()" >{0}</a></b>' +
'<a href="javascript:test();" ></a>',
'[IP]', record.data.siteIp, record.data.oasPort);
}
function test() {
alert(this);
}
var grid = new xg.GridPanel({
store: datastore,
columns: [
{header: "serverName", width: 100, sortable: true, dataIndex: 'serverName'},
{header: "tnsName", width: 150, sortable: true, dataIndex: 'tnsName'},
{header: "dbScheme", width: 60, sortable: true, dataIndex: 'dbScheme'},
{header: "virtPath", width: 40, sortable: true, dataIndex: 'virtPath'},
{header: "roadName", width: 150, sortable: true, dataIndex: 'roadName'},
{width: 40, sortable: true, dataIndex: 'oasHost',renderer: render3w},
{width: 40, sortable: true, dataIndex: 'roadName',renderer: renderIp}],
view: new Ext.grid.GroupingView({
forceFit:true,
groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
}),
frame:true,
width: 700,
height: 450,
collapsible: true,
animCollapse: false,
title: 'TST',
iconCls: 'icon-grid',
renderTo: document.body
});
});
|
Собственно есть функция:
function renderIp(value, p, record) {
return String.format(
'<b><a href="javascript:test()" >{0}</a></b>' +
'<a href="javascript:test();" ></a>',
'[IP]', record.data.siteIp, record.data.oasPort);
}
|
Которая реализует линки в моём гриде. При тырке на линк в должна вызываться функция test():
function test() {
alert(this);
}
|
Здесь,в тестовом варианте должен выскакивать алерт ,в реальности,мне нужно в этот test запихнуть
инициализацию нового ext контейнера,сейчас оно просто вне функции:
win = new Ext.Window({
el:'hello-win',
layout:'fit',
width:500,
height:300,
closeAction:'hide',
plain: true,
items: new Ext.TabPanel ({
el: 'hello-tabs',
autoTabs:true,
activeTab:0,
deferredRender:false,
border:false
}),
buttons: [{
text:'Submit',
disabled:true
},{
text: 'Close',
handler: function() {
win.hide();
}
}]
});
win.show();
|
Но это не так важно:) Вообщем проблема в том,что test почему-то просто не вызывается..ни ошибок,ничего..firefox просто открывает новую вкладку с пустым контентом..
Но мне нужно,чтобы функция test была именно внутри
Потомучто во время инициализации 2-го окна,я должен передавать значения переменных
Ребята,почему она не вызывается?..что я не так делаю? Почему фунцкции renderIp() и render3w() срабатывают,а test нет?..
Жду вашего совета. Спасибо) | |
|
|
|
|
|
|
|
для: jden
(22.01.2008 в 21:44)
| | Да,то что
'<b><a href="javascript:test()" >{0}</a></b>' +
'<a href="javascript:test();" ></a>',
|
- это нормально. Хотя должно быть:
'<b><a href="javascript:test();" >{0}</a></b>' +
'<a href="javascript:test();" ></a>',
| [/code]
Добавил ; ..,но всё также.. Вызывается только один раз:
'<b><a href="javascript:test();" >{0}</a></b>'
|
эта тема:
'<a href="javascript:test();" ></a>'
| - остаток кривых ручек,не обращайте внимания.. Это никогда не вызывается | |
|
|
|
|