有些JS文件更像库——它们[…]永远不要直接操作QML组件实例"-中间立场
"Some JS files act more like libraries - they [...] never manipulate QML component instances directly" - middle ground?
引用自在QML中定义JavaScript资源:
一些JavaScript文件的行为更像库——它们提供了一组辅助函数来接受输入和计算输出,但从不直接操作QML组件实例。
如果我想要一个JS文件
- 操作QML组件实例(作为参数传递给它)
- 没有得到它的代码和存储的每个QML组件实例导入它的数据的副本?
我可以得到"没有数据存储在每个实例"部分,好吧,不把全局变量在JS文件中。但是,由于某些奇怪的原因,似乎每个实例都存储了"代码"部分的副本。我不知道为什么会这样,但我想知道我是否可以绕过它,以及代价是什么。
我认为你从文档中引用的那行是不正确的,或者至少是措辞很差;您仍然可以拥有一个包含.pragma library
的JS文件,并操作作为参数传递给其函数的QML对象。这句话可能指的是上一节
要跨qml文件共享数据,请考虑使用qml Singleton
出于数据共享的目的,我不建议使用.pragma library
(@Mitch),原因如下:
-
.pragma library
js在qml对象操作中提供有限的功能。虽然简单的qml对象操作(如属性读/写)可以用.pragma library
js完成,它不允许创建/删除qml对象(就像你可以在常规的非库js中一样)。 -
.pragma library
只创建一个实例只是Qt实现中的一个优化。从来没有保证Qt只创建一个实例,也不保证你的数据实际上会被共享。 -
嗯,
.pragma library
从一开始就不是设计来做数据共享工作的。只是,不要尝试这样做。
相关文章:
- KnockoutJS-组件-多个实例
- 如何在另一个组件中获取指令/组件实例
- 在Flux中处理同一组件的多个实例
- Aurelia组件在其他视图模型中使用时不共享实例
- 通过“;类“"实例”;使用ReactJS组件代替“props”文字
- 处理Twitter Flight组件的多个实例的事件
- 当有多个 React.js 组件实例具有数据请求时如何处理缓存
- 比较两个组件 - 组件 X 是组件 A 的实例吗?
- ExtJs - 如何在使用多个实例时设置组件的 ID
- Emberjs-1.0 将控制器实例传递给 ember 组件
- ES6+React组件实例方法
- Vue JS-呈现多个组件实例
- 是否可以在React组件实例化后添加一个关键属性
- 如何更新表示相同数据的两个不同React组件实例
- 如何在Reactjs中创建组件实例
- 处理多个组件实例的回调
- 有些JS文件更像库——它们[…]永远不要直接操作QML组件实例"-中间立场
- Sinon.js - 在组件实例化之前存根 React 组件的函数
- 隔离 Angular 1.5 组件实例中的事件
- 如何在将组件实例移动到react中的另一个父组件时保留它