pscloud升级代码(Cloud网页模块QWEB简述之模块与类的介绍)
pscloud升级代码(Cloud网页模块QWEB简述之模块与类的介绍)在PS Cloud的web框架内,有个类似于模块模式的等价物,集成了该框架的其余部分。请注意,PS Cloud的Web模块与其他PS Cloud的addon模块概念上是不同的,一个addon模块是一个包含很多文件的文件夹,web模块仅仅是一个有命名空间概念的JavaScript。})();console.log("launch application"); }; app.main=main;
浪潮ERP PS Cloud模块模式(如app.js文件):
(function(){
app={};
function main(){
console.log("launch application");
};
app.main=main;
})();
在PS Cloud的web框架内,有个类似于模块模式的等价物,集成了该框架的其余部分。请注意,PS Cloud的Web模块与其他PS Cloud的addon模块概念上是不同的,一个addon模块是一个包含很多文件的文件夹,web模块仅仅是一个有命名空间概念的JavaScript。
1)模块
oepetstore/static/js/petstore.js声明了这样的模块:
openerp.oepetstore=function(instance){
instance.oepetstore={};
instance.oepetstore.XXX=......;
}
在PS Cloud的Web框架内,通过声明一个函数来声明一个JavaScript模块,并把这个函数放在全局变量openerp的属性内.这个属性名称必须和PS Cloud addon模块名称一致。当Web客户端转载这个addon模块时,该函数将被调用。将传入一个名为instance的参数,这个参数代表当前PS Cloud的Web客户端实例,包含了所有相关当前会话数据,以及所有Web模块的变量。 在instance对象内创建与addon模块名称一致的新命名空间是个惯例。这就是为什么我们在 instance.oepetstore设置一个空dictionary。这个dictionary就是命名空间,用来声明我们模块内自己使用的所有类和变量。
2)类
JavaScript不像其他面向对象编程语言那样有类机制。更确切地说,它提供了面向对象编程语言元素,但你必须自己定义,自己选择如何做。
定义一个新类,你需要从instance.web.Class类继承。语法如下:
instance.oepetstore.MyClass=instance.web.Class.extend({
say_hello:function(){
console.log("hello");
}
});