0
我在與修改是通過角模態控制器
我有
.controller("viewController", function($scope, $modal) {
$scope.allPosts = [
{
id: 1,
owner: "Owner 2",
profile: "images/profile.png",
title: "Book title 1",
image: null,
price: 25,
reply: 2,
fav: 1,
isFaved: false,
content: "test"
},
{
id: 2,
owner: "Owner",
profile: "images/profile2.png",
title: "Ken Follett",
image: "images/book1.jpg",
price: 20,
reply: 12,
fav: 3,
isFaved: true,
content: "The book is in nice"
}
];
$scope.addFav = function(id) {
_.each($scope.allPosts, function(post) {
if(post.id === id) {
post.isFaved = !post.isFaved;
if(post.isFaved) {
post.fav++;
$scope.myFavs.push(post);
} else {
post.fav--;
$scope.myFavs = _.reject($scope.myFavs, function(post) {
return post.id === id;
});
}
}
});
};
$scope.addPost = function() {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
allPosts: function(){
return $scope.allPosts;
}
}
});
};
)
.controller('ModalInstanceCtrl', function ($scope, $modalInstance, allPosts) {
$scope.postId = 50;
$scope.ok = function() {
var temp = {};
temp.id = $scope.postId;
temp.profile = "images/profile.png";
temp.title = $scope.title;
temp.type = $scope.type;
temp.price = $scope.price;
temp.reply = 0;
temp.fav = 0;
temp.isFaved = false;
temp.content = $scope.description;
$scope.allPosts.push(temp);
$scope.postId++;
$modalInstance.close();
};
});
$ scope.addFav(ID)功能添加對象問題
加入在現有的$ scope.allPosts下正常工作。但是,當我通過使用ModalInstanceCtrl添加新對象時,$ scope.allPosts被更新,但是當它到達$ scope.addFav(id)時,我無法修改從ModalInstanceCtrl推入$ scope.allPosts的新對象。比如我嘗試使用
post.fav++; // console.log(post) shows the fav property is not updated. it remains at 0.
你在哪裏申請新帖子的ID? 對我來說,它看起來像新帖子沒有得到一個ID,以便它永遠不會匹配循環ID === post.id – 2014-11-21 13:14:09
我刪除了一些不必要的數據,使代碼更容易閱讀。我錯誤地刪除了id屬性。它與ID無關。我現在添加了id屬性。謝謝 – byebyebyezzz 2014-11-21 15:33:11
這兩個控制器都有自己獨特的$範圍。 allPosts不在控制器之間共享。通常的解決方案是在注入兩個控制器的服務中具有公共數據。 – 2014-11-21 16:52:35