尝试为friends数组启用搜索输入,但是这些朋友正被异步抓取,所以我得到了这个错误Expected数组但收到了:{0} ----因为当过滤器加载时数组为空..到底有没有?
<span class="friendHeaders">Online Friends</span>
<input type="text" width="10%" class="friendSearch" placeholder="Search friends" ng-model="searchText"/>
<div class="friendScroll" scroll-glue-top>
<ul class="friendList">
<li ng-if='friend.online' ng-repeat="friend in friends track by $index | orderBy:'name' | filter:searchText" ng-click='startChat(friend)'>
<div ng-class='(friend.username === activeFriend.username) ? "activeFriendPanel" : ""' class='panel panel-default friendPanel'>
<span ng-if="friend.service === 'Locket'" class="glyphicon glyphicon-lock" aria-hidden="true"></span>
<span ng-if="friend.service === 'Facebook'" aria-hidden="true"><img class='icon' src='../../facebook.png'/></span>
<span ng-if="friend.service !== 'Locket' && friend.service !== 'Facebook'" class='friendService'>{{friend.service}}</span>
<span class='friendName'>{{friend.name}}</span>
<span class='friendArrow'><span class="glyphicon glyphicon-chevron-right vertical-center" aria-hidden="true"></span></span>
<div class="unreadMessage" ng-if="friend.unreadMessage">
New message
</div>
</div>
</li>
</ul>
</div>
这里有一些相关的控制器代码 friends数组是一个对象数组
var keyResponseTimeout = 15000;
angular.module('Locket.chat', ['luegg.directives', 'ngAnimate'])
.controller('chatController', function ($scope, authFactory, $stateParams, socket, encryptionFactory, $timeout) {
console.log('chat');
authFactory.signedin().then(function(resp){
if (resp.auth === 'OK') {
socket.connect();
var keyring = encryptionFactory.generateKeyPair();
var publicKey;
// send public key to friends on login
keyring.then(function (keypair) {
publicKey = keypair.pubkey;
socket.emit('sendPGP', keypair.pubkey);
});
$scope.currentUser = $stateParams.username || resp.username;
$scope.friends = [];
$scope.sentRequest = false;
function createFriendObj(username, online, name, service) {
return {
service: service || 'Locket',
username: username,
name: name || (username + ' daawwggg'),
unreadMessage: false,
online: online || false,
key: null,
messages: [],
unsentMessages: [], // added this in for revoke and show decrypted message for sender
unsentFBMessages: [], // Follows same convention. Will not work for messages from prev session
sentKey: false
};
}
// Listen for events from our extension
window.addEventListener('message', function(event) {
if (event.source != window)
return;
// Recieve a facebook friends list
if (event.data.type && (event.data.type === 'facebookFriendsList')) {
for (var i = 0; i < event.data.text.length; i++) {
var friend = event.data.text[i];
var friendObj = createFriendObj(friend.username, true, friend.name, "Facebook");
$scope.friends.push(friendObj);
}
// After receiving a facebook friends list, begin monitoring the facebook DOM
window.postMessage({ type: 'scanFacebookDOM', text: ''}, '*');
}
答案 0 :(得分:0)
想通了,索引跟踪干扰了过滤器。我把它拿出来工作