我想用angularjs创建一个书签按钮,我有marks表来存储它,也是一个包含所有帖子的Json文件。

HTML:

// Using angular ng-repeat loops over the posts.
<button ng-click="ajax( 'storeBookmark', post.id, post.mark.disable);" ng-init="hasMark = post.mark.disable">
  <span ng-show="hasMark" class='coreSpriteBookmarkFull32'></span>
  <span ng-hide="hasMark" class='coreSpriteBookmarkOpen32'></span>
</button>


角工厂

app.factory('posts', ['$http', function($http) {
  return $http.get('http://localhost/index.php/q')
         .success(function(data) {
           return data;
         })
         .error(function(data) {
           return data;
         });
}]);


角度控制器:

app.controller('WallController', ['$scope',"$http", 'posts', function($scope,$http, posts) {
  $scope.hasMark = false;
  posts.success(function(data) {
    $scope.posts = data.factory.data;
    $scope.user = data.user;
  });
  $scope.ajax = function(store,post_id,disable){
    $http.post('http://localhost/index.php/question/'+post_id+'/'+store)
      .success(function (data) {
        $scope.hasMark = !disable; //*** this is the problem!
      });
  }
}]);


但这是行不通的,我也尝试了另一种方法,但这是其中的最好方法!
你有什么想法

最佳答案

正如您已经建议的,我认为它在$scope.hasMark = !disable;语句中。我认为您应该更改以下内容:

在成功的回调函数中:

$scope.hasMark = !$scope.hasMark;


另外,请确保$ scope上存在$posts.mark.disable

我做了一个简化的Plnkr以显示我的意思:Plnkr

09-26 10:18