【问题标题】:Angular.js simple get object from ASP.NET controllerAngular.js 简单地从 ASP.NET 控制器获取对象
【发布时间】:2015-08-11 18:03:14
【问题描述】:

自从我上次查看 Angularjs 以来已经有一段时间了。我有一个简单的 get 调用 ASP.NET 控制器并返回一个 Json 对象 - 触发 get 但视图上没有填充任何内容。 Json 对象显示在浏览器中,所以它纯粹是一个 JS Angular 的东西。我知道我错过了一些简单的东西,但我不能完全确定它。如果有人愿意用一个很好的例子来展示我所缺少的东西。一直没找到简单的例子,大同小异。

Angularjs。

var ngCurrent = angular.module("ngCurrent", ['ngResource']);
var ctrCd;
// Declaring a Service
ngCurrent.factory("CurrentService", function ($resource) {
    return {
        data: $resource("/Current/Data/:id")
    }
});

ngCurrent.controller("CurrentController", function ($scope, CurrentService) {
    $scope.current = CurrentService.data.get({ "id": id}, isArray = false);
});

在 CSHTML 视图中(精简但包括所有相关行)

<div ng-app="ngCurrent" class="row">
    <div ng-controller="CurrentController" class="col-md-1"></div>
        <div class="row">
            <span class="col-sm-2">{{current.RecordName}}</span>

它运行会触发控制器的“获取”,但不显示任何数据,$scope.current 不包含任何对象。

我尝试过 JSFiddling 却没有成功,这里是 http://jsfiddle.net/Mark_Dete/Lfy66re1/1/

(注意 Json 模拟基于 http://jsfiddle.net/ExpertSystem/6PYsq/

【问题讨论】:

  • 如果你在 DevTools/Network 中查看,数据是否返回到客户端?
  • 更正:函数返回数据。这是一个对象 - {}。我能找到的例子似乎是针对 Json Arrays 的。错过了什么?

标签: asp.net json angularjs


【解决方案1】:

您可以从您的服务中返回一个承诺,例如:

    return $http({
      url: '/api/v1/service/',
      method: "GET",
      headers: {'X-API-TOKEN': api_key },
      params: _params
    })

然后在控制器中的 http 对象上使用 promise 回调(从您的服务返回的那个)

$scope.getApiData = function(){
  Service.getData($scope.api_key)
  .then(function(_data) {
    console.log(_data.data); 
    $scope.data_obj = _data.data;
  });

这是一个没有服务抽象的多合一版本,但它应该可以用于测试。

 $scope.getApiData = function(){
  $http({
      url: '/api/v1/service/',
      method: "GET",
      headers: {'X-API-TOKEN': api_key },
      params: _params
   })
  .then(function(_data) {
    console.log(_data.data); 
    $scope.data_obj = _data.data;
  });

确保您记得注入 $http 依赖项!

【讨论】:

  • 对此进行了一些尝试,但似乎无法再进一步。我想我以某种方式错过了一些简单的事情。顺便提一句。那是那里完整的 Javascript,但不知何故,我觉得缺少一些简单的东西。
  • 你能做一个简单的 curl 或 http 请求并确保你的 api/webservice 工作正常吗?
  • 如果我将 Get Url 放在浏览器中,我会得到 Json。即 {"RecordName": "Test" }
  • 好酷..你知道如何让那个函数触发吗?您可以在按钮元素中执行 ng-click="getApiData()" 进行测试。
  • 又试了一次。甚至似乎都没有触发“获取”进入该服务器。不确定我是否也在这里遗漏了什么。但是控制台上没有出现错误。已尝试对它进行 JSFiddle(上面编辑)以尝试更好地解释它,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多