gpt4 book ai didi

angularjs - Movilizer - 将 MovilizerJS 与 Ionic 结合使用

转载 作者:太空狗 更新时间:2023-10-29 13:53:30 24 4
gpt4 key购买 nike

我正在尝试将 MovilizerJS 与 Ionic Framework 结合使用来创建 HTML5 屏幕。我尝试从 Ionic 生成的 App.js 文件中引用 te MovilizerJS。我在插件文件夹中添加了 MovilizerJS 文件,并添加了包含 Cordova.js 的文件。

var oHead = document.getElementsByTagName('HEAD').item(0);
var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.src = "plugins/Movilizer.js";
oHead.appendChild(oScript);

似乎当我在浏览器(或 movelet 中的 html5 View )中加载 HTML5 页面时,MovilizerJS 没有加载。浏览器出现如下错误:

Module 'movilizer' is not available!

也许我需要将它作为一个模块添加到 Angular 框架中,但是当我尝试将它添加到模块时它仍然给我错误。我的 HTML 文件包含 movilizer 的脚本标签:

<script src="plugins/Movilizer.js"></script>

我的 App.js 代码目前看起来像这样:

angular.module('starter', ['ionic'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}

});
}).factory('MovilizerExtender', function ($rootScope) {
return {
startUpMovilizer: function(){
movilizer.readGlobalVariable("testTable",this.successCallback,this.errorCallback);
},
successCallback: function(result){
$rootScope.routestops = [
{ ontvNaam: 'nice' },
{ ontvNaam: 'it' },
{ ontvNaam: 'is' },
{ ontvNaam: 'working' }
];
},
errorCallback: function(){
console.log('failed');
}
}
}).controller("RoutestopCtrl", function($scope, $rootScope, MovilizerExtender) {
MovilizerExtender.startUpMovilizer();
$scope.routestops = $rootScope.routestops;

$rootScope.$watch('routestops', function(){
$scope.routestops = $rootScope.routestops;
});
});

当我直接调用 succesCallback 方法并注释行:movilizer.readGlobalVariable(...) 时,它不再尝试访问 movilizerJS 并且页面正常工作。另请注意,Movilizer.js 文件包含 app.js 代码中描述的 readGlobalVariable 方法。任何帮助或想法将不胜感激。

最佳答案

尝试引导您的应用而不是使用 ng-app:

window.onpageshow = ready;
function ready()
{
var deviceready = new Event("deviceready");
document.dispatchEvent(deviceready);
angular.bootstrap(document, ['starter'], {strictDi: true});
}

此外,使用 promise 等待 movilizer:

 .factory('MovilizerExtender', function ($q, $rootScope) {
return {
startUpMovilizer: function(){
var self = this;
var defer = $q.defer();

rootScope.$watch(function(value) {
return movilizer && movilizer.readGlobalVariable;
}, function(ready) {
if(ready) {
movilizer.readGlobalVariable("testTable",self.successCallback,self.errorCallback);
}
defer.resolve(ready);
});
return defer.promise;
},
successCallback: function(result){
$rootScope.routestops = [
{ ontvNaam: 'nice' },
{ ontvNaam: 'it' },
{ ontvNaam: 'is' },
{ ontvNaam: 'working' }
];
},
errorCallback: function(){
console.log('failed');
}
}
}).controller("RoutestopCtrl", function($scope, $rootScope, MovilizerExtender) {
MovilizerExtender.startUpMovilizer().then(function(){
$scope.routestops = $rootScope.routestops;
});
$rootScope.$watch('routestops', function(){
$scope.routestops = $rootScope.routestops;
});
});

关于angularjs - Movilizer - 将 MovilizerJS 与 Ionic 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com