DataModel是原生应用与WebView进行数据交换的桥梁。
OPT opt;
String dataKey;
Any dataValue;
enum OPT {
case "update"
case "read"
}
Whole dataModel maps;
WebView 在加载完成时,应该请求一次 DataModel 全量数据,以获取在网页未加载完成时的暂存数据。并把 JSDataModel
变量挂在window对象下, 否则数据变化触发的 JSDataModelDidChanged
方法会不生效
window.JSDataModel = {}
function init() {
JSMessage.newMessage("Native.DataModel").call(function(dataModel){
window.JSDataModel = dataModel
console.log(dataModel)
})
}
原生应用使用以下方法,向 WebView 传递数据。
self.webView.updateDataModel("date", dataValue: NSDate().description)
WebView 使用以下方法,向原生应用传递数据。
JSMessage.newMessage("Native.DataModel", {
opt: "update",
dataKey: "word",
dataValue: "Hello, World!"
}).call(null);
DataModel 中的数据变化时,JSDataModelDidChanged 函数会被调用,你可以通过定义该函数,响应数据变化。
window.JSDataModelDidChanged(dataKey) {
if (dataKey == "date") {
// do something
}
}