我有一个名为$scope.users
的范围,它会返回我应用中的所有用户,
[{"id":1,"name":"Peter Boomsma"},
{"id":2,"name":"Jan Jansen"},
{"id":3,"name":"Kees Keesen"},
{"id":4,"name":"Piet Pietersen"}]
然后我有一个名为$scope.current_user
的范围,它返回当前用户,以及他所关注的用户的ID,
{"id":4,"name":"Piet Pietersen","following":[
{"id":1},{"id":2},{"id":4}]
}
我有一个显示所有用户的ng-repeat,以及每个用户followUser
个操作,
%ul{"ng-repeat" => "user in users"}
%li
name: {{ user.name }}
%a{"ng-click" => "followUser(user)"} Follow user.
问题在于我无法区分已经被关注的用户和未被关注的用户。所以行动followUser
始终存在。我想向用户提供当前用户正在执行的其他操作,例如unfollowUser
。
我得到了当前用户关注的用户的ID,但我不知道如何为这些用户提供其他按钮。类似于unfollowUser
。
*更新*
通过使用Mihail他的建议,我得到了它(至少有点),
当我转到我的用户模板时,我加载了userCtrl,
usersService.loadUsers().then(function(response) {
$scope.users = response.data;
angular.forEach(response, function(user){
$scope.user = user
$scope.isFollowed = function(userId) {
var following = $scope.current_user.following;
for (var i=0; i<following.length; i++) {
if (following[i].id == userId) {
return true;
}
}
return false;
}
})
})
在我的模板中,我有,
%ul{"ng-repeat" => "user in users"}
%li
name: {{ user.name }}
%a{"ng-click" => "followUser(user)", "ng-show" => "!isFollowed(user.id)"} follow
%a{"ng-click" => "unfollowUser(user)", "ng-show" => "isFollowed(user.id)"} unfollow
这很好用。当用户被跟随时,则使用unfollowUser函数。问题是,当我取消关注用户时,视图不会更新。我必须刷新页面以查看取消关注操作的效果。
我已尝试在unfollowUser操作结束时添加init
,如此,
$scope.unfollowUser = function(user){
unfollowFriend.unfollowFriend(user).then(function(){
},function(){
}).then(init);
Notification.success(user.name + ' is verwijderd als vriend.');
}
init,
var init = function(){
console.log ('renew')
usersService.loadUsers().then(function(response) {
$scope.users = response.data;
angular.forEach(response, function(user){
$scope.user = user
$scope.isFollowed = function(userId) {
var following = $scope.current_user.following;
for (var i=0; i<following.length; i++) {
if (following[i].id == userId) {
return true;
}
}
return false;
}
})
})
}
我在浏览器日志中收到renew
消息,但视图未更新。
答案 0 :(得分:2)
我不擅长haml,所以我会写一个简单的html示例:
....
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
fragmentCheckbox = (CheckBox) findViewById(R.id.checkBoxInFragment);
fragmentCheckbox.setChecked(false);
...
答案 1 :(得分:1)
您可以创建一个函数来检查是否已按下给定用户,如:
$scope.isFollowed = function (userID) {
//check if the userID is in$scope.current_user.following
//return a boolean
}
然后在HTML代码中,您可以根据此函数进行检查,以显示followUser或unfollowUser。