1
コントローラ:ショーglyphicon角度値をHTMLに基づいて
.controller('BlogController', function(blogFactory, $routeParams, $scope){
var that=this;
stat=false;
this.checkbookmark = function(bId){
console.log(bId)
blogFactory.checkBookmark(bId, function(response){
console.log(response)
if(response == "bookmarked"){
that.stat = true;
}
else{
that.stat = false;
}
})
}
htmlコード:
私は STATの値に基づいてglyphiconを見せたい
<div class="container" ng-controller="BlogController as blogCtrl">
<div class="row" ng-repeat="chunk in blogCtrl.blogs | filter: filter_name | orderBy:'-created_at' | groupBy: 3">
<div class="outerbox1 col-sm-4" ng-repeat="blog in chunk" >
<div class="innerbox3" ng-init="blogCtrl.checkbookmark(blog._id)">
<br>
<div> > READ MORE
<a ng-if="blogCtrl.stat" ng-href="#" ng-click="blogCtrl.removebookmark(blog._id)" class="glyphicon glyphicon-heart pull-right">{{blogCtrl.stat}}</a>
<a ng-if="!blogCtrl.stat" ng-href="#" ng-click="blogCtrl.addbookmark(blog._id)" class="glyphicon glyphicon-heart-empty pull-right">{{blogCtrl.stat}}</a>
</div>
</div>
</div>
</div>
</div>
私は6つのブログを持っています最初の3つはブックマークされ、次の3つはブックマークされません。
の値は常に最後のブックマークに従って値が設定されているため、(前回のブログの状態に基づいて)常にfalse/trueです。
解決方法その後、
this.checkbookmark = function(blog){ //pass the entire blog, not just the id
blogFactory.checkBookmark(blog._id, function(response){
console.log(response)
if(response == "bookmarked"){
blog.stat = true; //set the property on blog instead of the controller
}
else{
blog.stat = false;
}
})
}
そして:代わりにあなたがブログのオブジェクトのプロパティを設定する必要があり、コントローラ上のstatプロパティを設定する
それは働いた。おかげさま...リアルタイムで表示を更新する方法を教えてください。つまり、ユーザーがクリックすると変更するグリフコンアイコンです。 @ x4rf41 – kRAk3N
私が言ったように、あなたは追加と削除の機能に同じ変更を行う必要があります:ブログ全体を渡してIDだけでなく、新しい値 – x4rf41
にblog.statプロパティを設定してください、ありがとう@ x4rf41 – kRAk3N