Javascript 从控制器中修改范围变量。电话后

Javascript 从控制器中修改范围变量。电话后,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,好的,那么,让我们从道歉开始,如果之前有人问过这个问题,而且这个问题非常愚蠢,我真诚地道歉 我是AngularJS的新手,最近成功地克服了CORS错误,通过解析登录,我甚至用Express.js在NodeJS中为我的应用程序编写了一个API,我刚刚遇到了一个有点困难的障碍 基本上,我有一些代码,如下所示: $http.get('http://localhost:3000/users?id=' + CryptoJS.MD5(config.SERVER_KEY)).then(fun

好的,那么,让我们从道歉开始,如果之前有人问过这个问题,而且这个问题非常愚蠢,我真诚地道歉

我是AngularJS的新手,最近成功地克服了CORS错误,通过解析登录,我甚至用Express.js在NodeJS中为我的应用程序编写了一个API,我刚刚遇到了一个有点困难的障碍

基本上,我有一些代码,如下所示:

         $http.get('http://localhost:3000/users?id=' + CryptoJS.MD5(config.SERVER_KEY)).then(function(resp) {
           //console.log('Success', resp);
           $scope.post = resp.data;
         }, function(err) {
           console.error('ERR', err);
           $scope.post = err;
         })
我的API路由器/用户实际上有误导性,但这只是从我的数据库中获取了一堆帖子并显示出来。查看是否成功,它会将其保存在$scope.post变量中,但例如,假设我“完成”了一篇文章,并且已经看到了该文章。单击按钮“移除”后,它将从阵列中移除。下面是我的代码的外观:

        $scope.next = function() {
          $scope.post.shift();
        }
不幸的是,它似乎不起作用。我甚至尝试过“删除$scope.post[0]”,但都失败了

我很确定我做错了什么,如果有人能帮我指出我的错误或正确的方向,那就太好了?多谢各位

编辑,以下是我的HTML页面代码的外观:

<div class="item center">
  <h2>{{post[0].title}}</h2>
</div>

<div class="item item-body" align="center">
  <div ng-if="post[0].postType == 'image'">
    <img src="{{post[0].postBody}}" height="{{width}}" width="{{width}}" />
  </div>
  <div ng-if="post[0].postType == 'text'">
    <p>"{{post[0].postBody}}"</p>
  </div>

  <div class="item tabs tabs-secondary tabs-icon-left">
   <a class="tab-item" ng-onClick="next()">
    <i class="icon ion-arrow-right-c"></i>
     NEXT!
   </a>
   <a class="tab-item" href="#" ng-onClick="like({{post[0].id}})">
    <i class="icon ion-heart"></i>
     Like ({{post[0].likes}})
   </a>
  </div>

</div>


首先,这将是一个评论,但我没有代表评论。我刚刚测试了您的代码,假设$scope.post是一个有效的对象或字符串数组,它就可以工作了

我假设响应中还有其他内容,数据是数组吗?如果不是,那就是你的问题。从resp中删除“.data”部分

$scope.post = resp.data;
编辑:lol,所以问题在html中,来自评论:

这条线

<a class="tab-item" ng-onClick="next()"> 

应该是

<a class="tab-item" ng-click="next()">


提醒我们,ng click是javascript的“onClick”的非直观转换

因为
$scope.post
是一个数组,我假设您可能会在视图中使用绑定到当前作用域中的“下一步”按钮来循环使用this

<ul>
  <li ng-repeat="p in post">
    {{ p }}
    <button ng-click="next( $index )">Next</button>
  </li>
</ul>

您是否尝试过$scope.post.splice(0,1);(假设您确定它是数组中的第一项)如何失败?您在操作之前和之后是否执行了console.log?什么都没变吗?或者(从数组中删除项目的)操作成功了,但您在视图中看不到它吗?@laggingreflection我认为这可能是实际发生的操作,但不会更新。您能告诉我如何做$scope.post的console.log吗?比如它应该放在哪里?在$scope内。下一步?因为出于某种原因,这不起作用。@Ajmajma是的,我也试过,但看看LaggingReflect的答案,这可能就是问题所在,重新加载。试过了,但使用ng repeat=“p in post”似乎只是显示了页面上的所有帖子,我现在要用页面的实际代码更新我的答案。非常感谢。数据包含主数组,这是什么意思?请你详细说明一下,谢谢!这只是一个关于resp.data是否实际上是一个数组的故障安全问题-看起来是这样的,您可以安全地忽略它。无论如何,还需要尝试设置$scope.post.data=resp.data;不要问我为什么,但有时候angularjs会将一个对象视为不可变的,除非它在另一个对象中。我只知道这是字符串的问题。但是试一下,以防万一。不应该超过两分钟。如果这不起作用,没有其他人有答案,我建议发布更多的代码。不,不幸的是,它不起作用。我会继续努力,非常感谢你的帮助!真糟糕。祝你好运为了省去一件事,我对$scope.next()函数进行了逐字测试(因为这也需要2秒钟),这适用于任何普通数组,所以问题出在别处。我想可能是屏幕上的更新。也许它只是没有在屏幕上显示更新。回到拉金的建议。我正在用数据和它的外观更新我的帖子。
<ul>
  <li ng-repeat="p in post">
    {{ p }}
    <button ng-click="next( $index )">Next</button>
  </li>
</ul>
$scope.next = function( i ) {
  $scope.post.splice( i, 1 );
}