【问题标题】:Angularjs $resource get/post returning same resultAngularjs $resource get/post 返回相同的结果
【发布时间】:2014-06-17 22:58:52
【问题描述】:

我是 Angular 的新手,所以我可能做错了。我的查询正在返回应有的对象数组。然后我做一个点击事件来测试帖子..它很好地访问了我的 web api......但是它从我的 get 中返回了相同的数组。我猜这是缓存?为什么我的帖子会显示我之前得到的结果?

编辑 - 对不起,我本来可以更清楚的。当我运行我的 saveTest 方法时,一个帖子触发并且我的数组保存,但是该保存的“结果”变量..是我原始获取的数组。

app.directive('referenceSection', function () {
 return {
   restrict: 'E',
   templateUrl: '/app/loanapplication/views/reference-section.html',
   controller: function ($scope, referenceService) {
     $scope.json = angular.toJson($scope.referenceArray);
     $scope.referenceArray = [];

     referenceService.query().$promise.then(function (result) {
       $scope.referenceArray = result;
       }, function () {
       alert("fail");
     });

     $scope.saveTest = function () {
       referenceService.save(angular.toJson($scope.referenceArray)).$promise.then(function (result) {
       var x = result;
       }, function () {
       alert("save fail");
     });
   }
 }
 };
});

服务

app.factory('referenceService', function ($resource) {
 var requestUri = '/api/reference';
 return $resource(requestUri)
});

网页接口

public class ReferenceController : BaseController
{

  public HttpResponseMessage Get()
  {
    List<WebReference> references = new List<WebReference>();

    WebReference reference = new WebReference();
    WebReference reference2 = new WebReference();

    reference.Name = "Andrew";
    reference.Relationship = "QuickSupport";
    reference.Id = 1;

    reference2.Name = "Josh";
    reference2.Relationship = "Hansen";
    reference2.Id = 2;

    references.Add(reference);
    references.Add(reference2);

    if (references == null) throw new HttpResponseException(HttpStatusCode.NotFound);

    return Request.CreateResponse<IEnumerable<WebReference>>(HttpStatusCode.OK, references);
  }

  public HttpResponseMessage Post([FromBody]WebReference[] references)
  {
    try
    {
      var msg = new HttpResponseMessage(HttpStatusCode.Created);
      return msg;
    }
    catch (Exception e)
    {
      throw new HttpResponseException(HttpStatusCode.Conflict);
    }
  }
}

}

【问题讨论】:

    标签: javascript angularjs asp.net-web-api


    【解决方案1】:
     referenceService.query().$promise.then(function (result) {
       $scope.referenceArray = result;
    

    在此之后,您需要致电 $scope.$apply() 通知 Angular 您对绑定所做的更改。如果我猜对了你的问题。

    :-)

    【讨论】:

      【解决方案2】:

      您从哪里阅读回复?从 x 外部不可用的 then 函数或者不将其附加到 referenceArray 是错误的

      referenceService.save(angular.toJson($scope.referenceArray)).$promise
      .then(function (result) {
        var x = result;
      }, function () {
        alert("save fail");
      });
      

      【讨论】:

      • 当我在 "var x = result" 上调试和中断时,'result' 变量包含来自原始 get 的数组
      • 什么服务器返回,你能检查一下 XHR 响应中的正文内容吗?
      猜你喜欢
      • 2015-11-22
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多