有没有办法强制NetBeans JavaScript自动完成?

时间:2015-02-25 20:39:42

标签: javascript netbeans autocomplete netbeans-8

我正在开发一些JavaScript,以便在我正在使用的CMS中使用。

我已经封装了我的代码:

(function(){
    var libraryName = {};
    ...code...
    window.libraryName = libraryName;
}())

现在,当我添加一个子名称空间并尝试在声明之外使用它时,NetBeans(8.0.2)自动完成功能不起作用。像这样:

(function(){
    var libraryName = {};
    libraryName.subSet = {
            showSomething: function(){}
    };
    window.libraryName = libraryName;
}())
libraryName.subSet.showSomething(); // This works
libraryName.subSet. // No current autocomplete even when pressing CTRL+space

我想知道是否有某种方法可以告诉NetBeans如何自动完成而不是猜测。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用Ctrl+K," hippie"代码完成。它直接完成一些匹配结果,如果完成的项目不是你想要的,你可以按住Ctrl + K来获得另一个自动完成的项目(将替换之前插入的项目)。另外,您可以按Ctrl+Space 2次以获得"完整"代码完成(意味着几乎所有来自其他对象/变量的内容)

更新:还有另一种使用JSDoc的方法,但它仅适用于NetBeans的Dev构建,并且将成为下一个8.1版本的一部分(您可以从here下载Dev构建版本):

/**
 * @typedef libraryName
 * @property {Function} showSomething description
 * @property {someProp} foo description
 */

/**
 * @typedef someProp
 * @property {Date} day description
 * @property {Number} num description
 */
/**
 * @typedef libraryName.someProp2
 * @property {Date} day description
 * @property {Number} num description
 */

这样你就必须创建这个"文档"对于您的库并将其放在项目中的JS文件中(可能是库的非缩小JS文件)。有了这个@typedef功能,你几乎可以学习代码完成任务,即使你的代码中甚至没有。)当然还有一些问题尚未解决(它是Dev build)......

答案 1 :(得分:1)

我尝试了另一种适合我的方法。

我复制了我的JavaScript文件并删除了封装。所以我现在有两个文件,"真实"一个与封装和另一个"工作"一个没有封装的人。现在,当我尝试使用自动填充时,它可以正常工作。

这样做的缺点是你会产生噪音,因为有一个文件不适用于网络应用程序,你必须在每次更新原始文件时更新它。但它通过自动完成的魔力使编码更容易。当您加载HTML时,您只是没有引用" working"文件。

所以,这将是我的main.js文件(例如在/js/main.js中)

(function(){
var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};
window.libraryName = libraryName;
}())

main.tmp.js文件就像这样(例如在/tmp/main.tmp.js中)

var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};

现在,当我libraryName.subSet.时,它会显示showSomething正确的自动填充功能。