Cordova ';未定义';不是一个函数(评估';navigator.contacts.chooseContact(成功时,选项)';)

Cordova ';未定义';不是一个函数(评估';navigator.contacts.chooseContact(成功时,选项)';),cordova,contactpicker,Cordova,Contactpicker,我已经安装了cordova 3.0.0并创建了helloworld项目,还安装了cordova插件联系人。 cordova创建Helloworld com.example.Helloworld“Helloworld” cd Helloworld cordova平台添加ios 科尔多瓦大厦 cordova插件添加 并尝试调用navigator.contacts.chooseContact 函数contactChooser(){ var options=new ContactFindOptions(

我已经安装了cordova 3.0.0并创建了helloworld项目,还安装了cordova插件联系人。 cordova创建Helloworld com.example.Helloworld“Helloworld” cd Helloworld cordova平台添加ios 科尔多瓦大厦 cordova插件添加

并尝试调用
navigator.contacts.chooseContact

函数contactChooser(){
var options=new ContactFindOptions();
options.fields=[“显示名称”、“姓名”、“电子邮件”、“电话号码”];
navigator.contacts.chooseContact(onSuccess,options);
}

但是在safari web inspector上出现了这个错误。

我发现cordova 3.0.0中有一个bug,(我提出了)名称空间冲突 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>

所有的问题都解决了


我在上提出了此错误,让我们看看他们是否有更好的解决方案。

我不确定Cordova如何工作,但navigator.contacts的控制台日志是什么?这应该表明chooseContact是否公开/可用。正如标题所说,它是未定义的。如果我包括plugins/org.apache.cordova.core.contacts/www/ios/contacts.js,那么我就可以解决这个问题。但随后出现了一个新问题,它说contacts.js第57行的其他函数未定义,并说create是未定义的var fullContact=require('./contacts')。create(result);这只是3.0版的还是3.1版的?你只是在iOS上看到的吗?谢谢