我正在使用带有Closure的angular,我遇到了@export注释的问题。特别是能够导出属性定义。我以为我有一些使用以下代码的东西,但它看起来很有气质。
/**
* @export
* @constructor
*/
com.MyController = function() {
this.greeting = 'hello';
this.goodbye = 'bye'
};
/**
* @export
*/
com.MyController.prototype = {
'sayGoodbye': function() {
return this.goodbye;
},
'sayHello': function() {
return this.greeting;
}
};
有时编译器会导出原型上的所有方法,有时它只会导出'sayGoodbye',然后有时会完全折叠原型上定义的整个对象。
我知道我可以这样做:
/**
* @export
*/
com.MyController.prototype.sayHello = function() {
return this.greeting;
};
哪种方法有效,但是当它一直打字时变得非常费力,而且它的可读性也会降低。
我知道编译器有一个选项可以选择setExportLocalPropertyDefinitions,但是代码的开源版本目前没有设置这个的标志 - 我一直在搞乱Java源代码试图设置它但是到目前为止没有运气。
更新 因此,如果在不相关的类中存在另一个具有相同名称的方法,那么原型上的方法(例如,sayGoodbye)似乎将被导出。我猜它的导出不是因为它被定义为我最初希望的字符串,而是因为这两种不相关的方法之间存在一些混淆?
答案 0 :(得分:0)
确保export
的方法签名已定义:
使用@export注释的代码必须
包括closure / base.js,或
使用相同的方法签名定义goog.exportSymbol和goog.exportProperty。
<强>参考强>