【问题标题】:Undefined object in Java Script Ionic frameworkJava Script Ionic 框架中的未定义对象
【发布时间】:2016-10-05 21:41:21
【问题描述】:

我在 Ionic 框架中编写了一个用于在 iOS 和 Android 上播放媒体的服务。它使用 Cordova 的媒体插件。我是初始化媒体对象并在 Java Script 中使用此代码播放它,但它返回未定义对象错误。

var self  = {
'currentTrack': null,
'initPlayer': function (videoID) {
self.currentTrack = Media(IP_ADDRESS + 'stream/'+videoID);
//self.currentTrack = _track;
console.log('initd');
},
'Play': function () {
console.log(self.currentTrack);

    self.currentTrack.play();



}
};

在模板中我以这种方式初始化音频播放器:

<ion-content ng-init="audioPlayer.initPlayer('foo')>

并在一个按钮中声明播放功能:

<button ng-click="audioPlayer.Play()"

错误:

Error: undefined is not an object (evaluating 'self.currentTrack.play')

【问题讨论】:

  • 在初始化媒体变量之前是否等待 deviceReady 事件?
  • @JuanFernandezSosa 我正在使用 ionic.Platform.ready(function(){});如何等待设备准备就绪?谢谢
  • 嗯,是的,其他方法是使用cordova的deviceready事件:document.addEventListener("deviceready", successCallback, errorCallback);您是否尝试通过 Chrome 的检查器使用断点来调试您的应用程序?
  • @JuanFernandezSosa 我正在由 Safari 开发人员检查员调试我的应用程序。因为我在模拟器上运行应用程序,我只能通过 Safari 模拟器网页检查器来调试它。
  • 你无法使用断点控制流程?然后看看会发生什么?我曾经使用 Safari Tecnology Preview 在 iOS 上调试我的应用程序

标签: javascript angularjs cordova ionic-framework cordova-media-plugin


【解决方案1】:

如果您在浏览器中开发应用程序,Cordova 插件在开发时无法在浏览器中运行。 您需要构建应用程序才能使用插件。 您可以使用远程调试工具来调试“.apk”或“.ipa”。 您可以通过here获取更多关于远程调试的信息。

记住以下几点,

  1. 您正在设备就绪事件上执行所有代码。
  2. cordova.js 文件必须是您要加载的第一个 js 文件。

【讨论】:

  • 是的,我知道,我正在真实设备和模拟器上进行测试。谢谢
  • 确保在 deviceready 事件中执行所有代码。
  • 另外,cordova.js 文件必须是您正在加载的第一个 js 文件。
  • yadaev 谢谢。我没有在 deviceready 事件中正确声明我的函数。现在可以使用了。
【解决方案2】:

我没有在deviceready 事件中正确声明我的函数。现在可以了。

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 2016-07-10
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多