I am having trouble settling down to a proper practice for UI JavaScript coding. So I am looking for a smarter way to do things. I’ve been using jQuery with ASP.NET and I have been doing things like below which seems unprofessional and dumb. JavaScript UI programming has always been a mysterious to me. I know how to do it but I never knew how to do it properly.
$(function(){
$('submit').click(function() {
//behaviors, setup styles, validations, blah...
});
});
Problems:
Goals:
Questions:
Being a C# developer mainly my thinking is very OO and jQuery is very procedural. I understand the concepts of Anonymous Function however in general my mind is still trying to make a domain model which abstracts the UI then declares properties or methods. But I am really not sure if this is the way in JavaScript. Or am I being too ideal or am I trying too hard to make something that's not supposed to be OO OO like? So the questions are:
Thank you.
Updated: I just found this slide and it seems to be a good starting point. This is also a good example that I just found. And a good tutorial by the creator of jQuery.
The best technique I have found for code reuse, dealing with client ids and so on is to intoduce a more object oriented approach into my Javascript.
This has the following benefits
I still use Jquery within this.
So to give an example if I had a javascript based widgit I wanted to make use of I would create an "object" called widget and save it in a Widget.js file. The widget object would have instance variables, a constructor and public, private methods just like in any other OO langauge e.g Widget.js would look like
// constructor
function Widget(aFooId,bBarId)
{
// instance variables
var fooId = aFooId;
var barId = bBarId;
// some magic to expose public methods
this.Init = Init;
// public methods
function Init()
{
alert("called init");
}
//private methods
function PrivateMethod()
{
}
}
The call on the aspx page would look like
var widgetInstance = new Widget("<%=Foo.ClientId%>",<%=Bar.ClientId%>);
widgetInstance.Init();
The ClientId issue is a known one and tough to get around. ASP.NET 4.0 is introducing a ClientIDMode that will let you have some finer-grain control over the final id rendered. ASP.NET MVC would definitely make your client scripting life a lot easier. If this is causing you a lot of grief and waiting for ASP.NET 4.0 or going with ASP.NET MVC are viable options, I would explore those alternatives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With