私は現在、OO Javascriptを学習しようとしているので、よりクリーンなコードを書くことができます。下の私のコードでは、JQuery UI Dialogオブジェクトと私のクラスを使用しているので、たくさんのDialogを簡単に初期化できます。どのように関数から初期化されたダイアログオブジェクトを返すことができますか?
問題は、関数がダイアログオブジェクトを返さないため、メソッドとプロパティにアクセスできないことです。
/*
* Load AddTaskForm dialog
*/
$('#AddTask').click(function()
{
/* Ajax request to load form into it */
$.ajax({
type: 'Get',
url: '/Planner/Planner/LoadAddTaskForm',
dataType: 'html',
success: function (AddTaskForm)
{
var d = new AddDialog();
var result = d.Dialog();
/* AddTaskDialog.html(AddTaskForm);
AddTaskDialog.dialog('open');*/
}
});
});
function AddDialog()
{
this.Dialog = function()
{
$('<div></div>').dialog(
{
width: 580,
height: 410,
resizable: false,
modal: true,
autoOpen: false,
title: 'Basic Dialog',
buttons:
{
Cancel: function()
{
$(this).dialog('close');
},
'Create Task': function()
{
}
},
close: function()
{
$(this).dialog('destroy').remove();
}
});
}
}
**更新されたコード
/*
* Load AddTaskForm dialog
*/
$('#AddTask').click(function()
{
/* Ajax request to load form into it */
$.ajax({
type: 'Get',
url: '/Planner/Planner/LoadAddTaskForm',
dataType: 'html',
success: function (AddTaskForm)
{
var AddTaskDialog = $('<div></div>');
AddTaskDialog.dialog(AddTaskDialogOptions);
AddTaskDialog.html(AddTaskForm);
AddTaskDialog.dialog('open');
}
});
});
/*
* Add task dialog default options
*/
var AddTaskDialogOptions = {
width: 580,
height: 410,
resizable: false,
modal: true,
autoOpen: false,
title: 'Basic Dialog',
buttons:
{
Cancel: function()
{
$(this).dialog('close');
},
'Create Task': function()
{
}
},
close: function()
{
$(this).dialog('destroy').remove();
}
}
これは、あなたが "リターン" いずれかのダイアログがいけないので、これは
/* Ajax request to load form into it */
$.ajax({
type: 'Get',
url: '/Planner/Planner/LoadAddTaskForm',
dataType: 'html',
success: function (AddTaskForm)
{
var addTaskDialog = $('<div></div>');
addTaskDialog.dialog(AddTaskDialogOptions);
addTaskDialog.html(AddTaskForm);
addTaskDialog.dialog('open');
}
});
良い点ルーク。好奇心の外に、関数の代わりにダイアログオブジェクトをどうやって返すのですか? – chobo
私の更新を見る... – Luke
それを提供していただきありがとうございます。あともう一つだけ。あなたの最初の例では、フォームを閉じたりキャンセルしようとすると、「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」というメッセージが表示されます。それは "this"ポインタが好きではありません。 – chobo