Существует небольшая проблема с Visual Studio 2010 и Javascript Intellisense.
Я реализовал класс с некоторыми «Свойствами» и хочу реализовать «статическую» функцию, которая возвращает новый экземпляр класса после ajax-запроса, который возвращает Json-Object.
Вот так:
/// <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;
}
И функция:
intellisense не работает:
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);
}
});
}
intellisense работает:
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
});
мой intellisense больше не работает (или работает с двойным возвратом), потому что возврат MyFunction находится в ajax-запросе. Если я помещу возврат в конец функции, intellisense снова работает. Но в этом случае у меня есть два возврата. Первый из функции, а второй из ajax-success.
Кажется, что <returns...></returns>
работает только тогда, когда возврат находится в конце функции. Это плохо, потому что мне просто нужно одно возвращение, когда ajax-запрос завершен.
Я не знаю, как справиться с этой проблемой. Надеюсь, вы можете помочь мне исправить это:)