【问题标题】:'undefined' is not a function (evaluating 'navigator.contacts.chooseContact( onSuccess, options)')'undefined' 不是函数(评估 'navigator.contacts.chooseContact(onSuccess, options)')
【发布时间】:2013-08-01 22:08:25
【问题描述】:

我已经安装了 cordova 3.0.0 并创建了一个 helloworld 项目,并安装了 cordova-plugin-contacts。 科尔多瓦创建 Helloworld com.example.helloworld "Helloworld" cd Helloworld 科尔多瓦平台添加 ios 科尔多瓦建造 科尔多瓦插件添加https://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts.git

并尝试致电navigator.contacts.chooseContact

function contactChooser(){
    var options = new ContactFindOptions();
    options.fields = ["displayName", "name", "emails", "phoneNumbers"];
    navigator.contacts.chooseContact( onSuccess, options);
}

但在 Safari 网络检查器上出现此错误。

【问题讨论】:

  • 我不确定 Cordova 是如何工作的,但是 navigator.contacts 的控制台日志是什么?这应该显示 chooseContact 是否公开/可用。
  • 正如标题所说,它是未定义的。
  • 如果我包含 plugins/org.apache.cordova.core.contacts/www/ios/contacts.js 那么我可以摆脱这个问题。但随后出现了一个新问题,它在 contacts.js 的第 57 行对其他函数说未定义,并说 create is undefined var fullContact = require('./contacts').create(result);

标签: cordova contactpicker


【解决方案1】:

我发现 cordova 3.0.0 中存在一个错误,(我提出)命名空间发生冲突 org.apache.cordova.core.contacts.cotancts

对此的正确解决方案如下 编辑 org.apache.cordova.core.contacts/plugin.xml 并将联系人替换为 contactxxx 如下

    <js-module src="www/ios/contacts.js" name="contacts_ios">
        <merges target="navigator.contacts" />
    </js-module>

    <js-module src="www/ios/Contact.js" name="Contact_ios">
        <merges target="Contact" />
    </js-module>

所有问题都解决了

我已经在https://issues.apache.org/jira/browse/CB-4599 提出了这个错误,让我们看看他们是否有更好的解决方案。

【讨论】:

  • 这仅适用于 3.0 还是已在 3.1 中修复?你只在 iOS 上看到过这个吗?谢谢!
猜你喜欢
  • 2018-10-30
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多