欢迎来到天天文库
浏览记录
ID:10429163
大小:23.22 KB
页数:5页
时间:2018-07-06
《qml核心功能- 集成javascript》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、集成JavaScript本文翻译来源于官方网站,未经本人允许,勿转发。持续更新中。。。。。QML鼓励使用属性绑定和存在的QML元素显示构建UI。为了允许实现更高级的方法,QML与重要的JavaScript代码紧密的集成在一起。QML提供的JavaScript的运行环境要比webbrowser提供的运行环境要严格。在QML中,不能添加,或者修改,Javascript全局对象的成员变量。如果使用没有声明的变量可能会出现异常。在QML中,这将会抛出一个异常,因此所有的局部变量应该被显示声明。除了标准的JavaScript属性,QML的全局对象包含了很多帮助方法,
2、帮助构建UI并和QML的环境进行交互。内联JavaScript小的 JavaScript方法可以内联到QML的声明中。这些内联的方法作为方法被添加到QML元素中。Item{functionfactorial(a){a=parseInt(a);if(a<=0)return1;elsereturna*factorial(a-1);}MouseArea{anchors.fill:parentonClicked:console.log(factorial(10))}}作为QML的组件中的根元素方法,内联的功能,可以被外部的组件调用。如果不想要这些方法,可以把它添加
3、到非根元素中,或者更好卸载一个外部的Javascript文件中。单独的JavaScript文件大的JavaScript模块应该卸载单独的文件中。使用import声明,可以将这文件导入到QML文件中,同样的方式,模块也可以被导入。例如,在上述例子的被内联的方法factorial可以一如到一个外部文件中,叫 factorial.js,而且可以像如下方式来访问:import"factorial.js"asMathFunctionsItem{MouseArea{anchors.fill:parentonClicked:console.log(MathFunctio
4、ns.factorial(10))}}相对和绝对JavaScriptURI都可以被导入。如果script文件是不可以访问,将会出现一个error。如果需要从网上提取JavaScript,QML文档有一个”Loading”的状态,直到脚本被下载完成。导入的JavaScript文件总是使用“as”关键自取个别名。这个JavaScript的别名必须是唯一的,因此别名和JavaScript文件是一一匹配的。实现文件后的代码大多数导入到QML文件的JavaScript文件是状态,逻辑实现。当导入JavaScript文件的时候,这个默认的行为提供了一个唯一的,孤立的Q
5、ML实例。在同样范围的代码运行QML组件实例,和持续的访问多个对象和声明的属性。没有状态的JavaScript库一些JavaScript文件表现的行为更像库-他们提供了一组没有状态的帮助方法,例如输入和计算输出,但是永远不要直接操作QML组件的实例。对于每一个QML组件来说,每一个都有一个唯一的库文件拷贝版,它是比较浪费的。JavaScript编码者可以指定体术的文件是一个无状态的库,通过编码使用,例子如下://factorial.js.pragmalibraryfunctionfactorial(a){a=parseInt(a);if(a<=0)retu
6、rn1;elsereturna*factorial(a-1);}在任何JavaScript代码执行注释之前,编码的声明必须有。当但它们是被分享,无状态库文件是不能访问QML组件实例对象或者属性,尽管QML的只可以作为方法的参数可以被传递。作为开始程序运行JavaScript有时候,很有必要运行一些必要的代码作为程序或者组件实例的开始程序。而且它是暂时的包含开始的脚本作为一个全局的代码在一个外部的脚本文件中,作为QML环境,这可能有一些限制没有。例如,一些对象可能没有被创建或者绑定的属性没有被执行。QMLJavaScript限制覆盖了全局代码的一些精确的限制
7、。 QML组件提供了一个附件的 onCompleted 属性,可以被用来触发执行代码开始部分的方法,在QML的环境完全建立之后。例如:Rectangle{functionstartupFunction(){//...startupcode}Component.onCompleted:startupFunction();}任何在QML文件中的元素,包括嵌入的元素和嵌入的QML组件实例,可以使用附件的属性。如果这有超过一个 onCompleted() 方法去处理startup,它们会以一个没有的定义的顺序串行执行。同样的,在组件销毁时Component::on
8、Destruction附加的属性将会被触发。QMLJavaScri
此文档下载收益归作者所有