一些背景,跳到第2段来解决问题。我已经尝试了很多像你这样的典型开发人员的编辑器,而且我最喜欢的是Homesite / ColdFusion Studio,然后才被吸入Dreamweaver,我相信你们中的大多数人都会同意我的意见,是的。是Dreamweaver。无论如何,我一直在运行Sublime Text 2,它没关系,但我觉得我需要更多的IDE而不是文本编辑器。为此,我已经使用NetBeans几个月了。我开始喜欢它。在家里我使用带有TextMate和Coda的Mac,但我不介意完全转移到NetBeans,但是有一些问题困扰我。最引人注目的是它的XSL编辑因为一些原因而烦人,其次是我一直在使用的这个JavaScript问题。
我喜欢使用ctrl +点击方法来跳转JavaScript文件的功能,alt + back可以向后移动并能够在导航器中查看方法和类的轮廓。但是我的问题是,在我的Javascript文件中,NetBeans似乎无法弄清楚我的类及其方法。我使用一种模式来编写我的单例类,这对我来说是不可或缺的。我写的课程如下:
// create class to contain code for this page
var FieldMgmt = function() {
// vars local to the class
var Fields = {}; // Store the form fields of the class
return {
// startup method
init: function() {
// initialize properties
console.log('field management intialized');
// capture the fields
this.Fields = Fields = {
field1: $('select[name=field1]') // field One
,field2: $('select[name=field2]') // field Two
,field3: $('select[name=field3]') // field Three
};
this.initEvents(); // setup events
}
// initialize events
,initEvents: function(){
}
// method 1
,method1: function(arg1, arg2){
}
// method 2
,method2: function(arg1, arg2){
}
}; // end return of FieldMgmt
}(); // end FieldMgmt
// start the code for this page
$(document).ready( function(doc){ FieldMgmt.init(); } );
以下是我的导航器中显示此文件的图片:
正如您所看到的,我的方法都没有显示在导航器中,例如initEvents
,method1
,method2
等。按住Ctrl键并单击方法调用不要去方法声明。所以NetBeans只是不知道这是一个类。我之前在其他编辑器中遇到过这种模式的类似问题,例如NotePad ++和我能够通过修改用于解析文件的正则表达式来让编辑器找出我的文件。
我可以在没有这个功能的情况下生存但是如果我可以让它工作那么这将是我的选择编辑器,因为这些文件可以变得相当大并且能够看到所有方法并通过ctrl + click快速跳转文件 - 等等太棒了。
我正在使用NetBeans 7.3,在Windows Server 2003上更新到今天的最新版本。任何帮助将不胜感激。反正我有没有修改NetBeans以便它知道我的方法?有插件吗?提前谢谢。
答案 0 :(得分:1)
在您的示例代码中,您返回一个闭包,它将名为Fields
的变量保持为“私有”,但您在init中执行的第一件事是通过声明this.Fields = Fields公开它。通过发布示例代码,您可以将FieldMgmt声明为对象文字,并让NetBeans识别它以使其属性显示在导航器中。
var FieldMgmt = {
init: function() {
}
,initEvents: function(){
}
,method1: function(arg1, arg2){
}
,method2: function(arg1, arg2){
}
};
答案 1 :(得分:1)
感谢@HMR的回答。它让我走上了正确的道路。我现在发布这个,以便其他人使用我提到的编码风格可以有一个例子,说明如何修改它们以显示在导航器中而不改变它的行为方式或失去以这种方式构造代码的优点。所以最终结果如下:
// create class to contain code for this page
var FieldMgmt;
(function(){
// vars local to this closure
var Fields = {}; // Store the form fields of the class
FieldMgmt = {
// startup method
init: function() {
// initialize properties
console.log('field management intialized');
// capture the fields
this.Fields = Fields = {
field1: $('select[name=field1]') // field One
,field2: $('select[name=field2]') // field Two
,field3: $('select[name=field3]') // field Three
};
this.initEvents(); // setup events
}
// initialize events
,initEvents: function(){
}
// method 1
,method1: function(arg1, arg2){
}
// method 2
,method2: function(arg1, arg2){
}
}; // end FieldMgmt
})(); // end closure
// start the code for this page
$(document).ready( function(doc){ FieldMgmt.init(); } );
导航器现在显示方法和属性:
希望有所帮助。
答案 2 :(得分:0)
适用于当前版本的Netbeans 8.1。