Ember.js QT w/ Javascript Bridge
Ember.js QT w/ Javascript Bridge
我们有一个完整的桌面应用程序基于QT c++ (mac &windows)。我们利用webkit来提供基于HTML和Javascript的UI。我们还通过javascript桥与c++进行交互。我正在做相当的大厅和合并烬.js作为MVC更模块化的UI。
我的问题是关于持久性的最佳方法。我应该坚持我们目前使用的Javascript对象,还是转换到Ember Data持久化,并通过Ember Data(转换层)中的函数读写?
我们也利用webkit,但我应该看到,而不是利用Node.js而不是海峡html/js?
我不想做剧烈的改变,但我想把它做好。任何建议吗?
从余烬方面来看,没有理由使用余烬数据,因为没有它余烬工作得很好。但是Ember的基础设施严重依赖于Ember.Observable
提供的API, Ember.Object
的所有子类都可以使用。同样,如果你使用Ember.Array
和Ember.MutableArray
, JavaScript数组将支持更多的Ember特性,尽管这将自动发生,除非你禁用Ember.EXTEND_PROTOTYPES
。
因此,一个非常合理的方法是将现有的模型类移植到Ember.Object
。这将需要,除其他外,使用get
和set
访问属性。如果你这样做,那么你的对象将是第一类烬公民,你将有机会获得烬的所有整洁的功能,包括自动视图更新和数据绑定。
这是Ember.Object
的样子,以及它是如何与Ember的其他部分集成的:
MyApp.Person = Ember.Object.extend({
firstName: null,
lastName: null,
init: function () {
// You can put more initialization code here.
},
// Compute fullName based on firstName and lastName.
// This will automatically propagate updates when
// firstName or lastName changes.
fullName: function () {
return this.get("firstName") + " " + this.get("lastName");
}.property("firstName", "lastName")
});
var person = MyApp.Person.create({ firstName: "Jane", lastName: "Doe" })
然后,在Ember视图中,你可以这样写:
<p>{{person.fullName}}</p>
当firstName
或lastName
发生变化时,视图将自动更新。类似地,您可以使用以下代码编辑firstName
:
{{view Ember.TextField valueBinding="person.firstName"}}
在本例中,对文本字段的更改将自动传播回底层对象。(不过你可以聪明一点,建立一个文本字段,只在用户完成编辑时传播更改。)
如果您需要将属性更新从Ember传递到QT,请参阅使用计算属性构建getter和setter的指南或使用观察者。这在很大程度上取决于您如何通过JavaScript桥暴露您的c++ api。但只要你能以某种方式连接到Ember.Observable
,你就可以完全访问Ember的所有功能。
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 嘿,我正在尝试将此c ++转换为javascript,但有些东西不起作用
- C++中的 JavaScript 样式闭包
- OpenCV(C++)处理来自JavaScript / Web Assembly的图像数据
- 在C++中嵌入 Mozilla 的 JavaScript 引擎
- Javascript 找不到使用 emscripten 编译的导出 WASM 函数
- 在Javascript和C++中计算MD5哈希的不同结果
- 将Wiimote MAC地址转换为PIN码,从C++转换为Python或Javascript
- 如何使用EM_JS从带有参数的C++调用javascript方法
- JavaScript 中的一等函数和 C++ 中的函数声明
- 在 v8 JavaScript 中重复调用C++是否有巨大的开销?
- 在QtWebEngine中捕获JavaScript事件
- JavaScript箭头函数:我们能否像C ++ lambdas一样捕获值
- 我可以使用谷歌 v8 在回调函数中获取 JavaScript 函数C++源文本吗?
- 如何像在javascript中一样"push" c ++映射
- 如何读取 Javascript 文件
- QtWebkit javascript bridge,无法访问 Qt 对象方法
- 使用GTK+ Webkit Webview(和Qt Webkit bridge)从JavaScript / HTML调用
- Ember.js QT w/ Javascript Bridge