Visual Studio 2010 和 Javascript Intellisense 有一点问题。
我已经实现了一个具有一些“属性”的类,并希望实现一个“静态”函数,该函数在返回 Json 对象的 ajax 请求之后返回该类的新实例。
像这样:
/// <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 请求中。如果我将 return 放在函数的末尾,智能感知就会再次工作。但在这种情况下,我有两个回报。第一个来自函数,第二个来自 ajax-success。
似乎<returns...></returns>
只有当返回位于函数末尾时才有效。这很糟糕,因为我只需要在 ajax 请求完成后返回一次。
我不知道如何处理这个问题。希望你能帮我解决这个问题:)