我有一个Cordova插件,它可以进行一些Web服务思考,我希望它使用sendJavascript android命令在WebView上调用一个角度工厂函数。
我有另一个项目,它在没有angularjs的情况下工作。
AngularJS工厂
....
.factory('playerService', function(){
var title = "Tryk på play";
var setTitle = function(t) {
title = t;
}
var getTitle = function() {
return title;
}
return {
setTitle : setTitle,
getTitle : getTitle
}
})
....
Cordova插件
....
cordova.webView.sendJavascript("javascript: playerService.setTitle('test test');
....
我得到了一个"playerService"没有定义-在logcat android输出中。
最后我得到了一个解决方案。。。
1) 首先,我在DOM中选择了一个元素,这个元素就在作用域中。在我的例子中,我有一个带有ID播放按钮的div
cordova.webView.sendJavascript("javascript: angular.element(document.querySelector('#playbuttons')).scope().$apply(function() {angular.element(document.querySelector('#playbuttons')).scope().playerService.setTitle('TESTING')})");
我觉得这我很生气,所以如果有人能纠正我,请放心;)