2014-03-27 87 views
1

我能够从简单的html和javascript获取并显示联系人照片,但是当我使用angularjs模型显示联系人照片时,出现错误。以下是我的源代码:无法通过angularjs在电话中显示联系人照片

名单,我想显示联系人:

<ul class="list"> 

    <li class="item item-thumbnail-left" ng-repeat="contact in contactList"> 
      <img ng-src="{{contact.mphoto}}"/> <!--When I put this path directly (ie "content://com.android.contacts/contacts/30/photo"), I am able to display the image, but when I fetch it from the controller, I am getting error: "unable to read contacts from asset folder" --> 
      <h2>{{contact.name}}</h2> 
      <p >{{contact.number}}</p> 

    </li> 
</ul> 

这里是我的设置ContactList控制器:

ContactService.find("").then(function(contacts) { 
     for (var i = 0; i < contacts.length; i++) 
     { 
      if (contacts[i].phoneNumbers !== null) 
      { 
       for (var j = 0; j < contacts[i].phoneNumbers.length; j++) 
       { 
var img = contacts[i].photos != null ? contacts[i].photos[0].value : "img/default.png"; 

        $scope.contactList.push({name: contacts[i].name.formatted, number: contacts[i].phoneNumbers[j].value, mphoto: img}) 
       } 
      } 
     } 
+0

你得到的这条底线?我有同样的问题? – user1255162

+0

没有运气,同样的事情在IOS工作,但不是在Android –

+0

@ user1255162请参阅下面的答案也许它也会解决您的问题 –

回答

10

最后经过这么多的斗争我会能够找到问题,

请将以下行粘贴到您的App.js文件中,问题将得到解决,而不显示照片的原因是Angularjs增加了不安全性:每个url之前,如果它不被信任。

config(['$compileProvider', function($compileProvider) { 
      $compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|content):|data:image\//); 
     }]); 
+1

真棒,完成这个工作,并非常感谢这么多共享。 – user1255162

+0

哇,感谢找出这个Vivek,在最后一个小时试图弄清楚它的过程中,我的头撞在一堵砖墙上。 –

+0

@reitoei谢谢:)我也烧了我的3个月找出这个:D –

0

我是有这个问题在角2离子2,但我不知道这是问题,我不知道如何尝试在角2.受主答案为了完整起见,这里是你将如何使用Ionic 2修复它:

在您的控制器/服务中注入sanitizer: DomSanitizer

然后调用:sanitizer.bypassSecurityTrustUrl(photoURL)

下面是一个例子:

export class HomePage { 
    url; 

    constructor(public navCtrl: NavController, platform: Platform, sanitizer: DomSanitizer) { 
    platform.ready().then(() => { 
     Contacts 
     .pickContact() 
     .then((contact) => { 
      alert(JSON.stringify(contact)); 
      if (contact.photos) { 
      var photoURL = contact.photos[0].value; 
      this.url = sanitizer.bypassSecurityTrustUrl(photoURL); 
      } 
     }); 

    }) 
    } 

} 
相关问题