VisualStudio2010とJavascriptIntellisenseには少し問題があります。
いくつかの「プロパティ」を持つクラスを実装しましたが、Json-Objectを返すajax-requestの後にクラスの新しいインスタンスを返す「static」関数を実装したいと思います。
そのようです:
/// <reference path="jQuery/jquery-1.4.1-vsdoc.js" />
MyClass = function (options) {
/// <summary>MyClass Description</summary>
/// <param name="options" type="Array">Foo1 (string), Foo2(string)</param>
/// <field name="Foo1" type="String">Foo1 Description</field>
/// <field name="Foo2" type="String">Foo2 Description</field>
// [...] Some Code
// Properties
this.Foo1 = options.Foo1;
this.Foo2 = options.Foo2;
}
そして機能:
インテリセンスが機能しない:
MyClass.MyFunction = function () {
/// <summary>MyFunction Description</summary>
/// <returns type="MyClass">MyClass</returns>
$.ajax({
type: 'GET',
url: '/Foo/Bar',
dataType: 'json',
success: function (result) {
return new MyClass(result);
}
});
}
インテリセンスの動作:
MyClass.MyFunction = function () {
/// <summary>MyFunction Description</summary>
/// <returns type="MyClass">MyClass</returns>
var foo = new MyClass({'foo1': 'a', 'foo2': 'b'});
$.ajax({
type: 'GET',
url: '/Foo/Bar',
dataType: 'json',
success: function (result) {
foo = new MyClass(result);
return foo;
}
});
return foo;
}
次のような別の関数から関数を呼び出すと、次のようになります。
$(document).ready(function() {
var foobar = MyClass.MyFunction(); // returns Object of type "MyClass"
alert(foobar.Foo1); // At this Point, the intellisense doesn't work correct
});
MyFunctionのリターンがajax-request内にあるため、私のインテリセンスは機能しなくなりました(またはダブルリターンで機能します)。関数の最後にリターンを配置すると、インテリセンスは再び機能します。しかし、この場合、2つのリターンがあります。1つ目は関数から、2つ目はajax-successから。
リターンが関数の最後にある場合に<returns...></returns>
のみ機能するようです。これは悪いことです。ajax-requestが完了したときに1回だけ戻る必要があるからです。
この問題に対処する方法がわかりません。あなたが私がこれを修正するのを手伝ってくれることを願っています:)