Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS未在视图中显示JSON响应_Javascript_Json_Angularjs - Fatal编程技术网

Javascript AngularJS未在视图中显示JSON响应

Javascript AngularJS未在视图中显示JSON响应,javascript,json,angularjs,Javascript,Json,Angularjs,根据要求更新,包含更多信息: 我有一个调用web方法的控制器,我希望返回的JSON绑定到控制器中名为applications的变量。警报正确显示JSON,但我在视图中什么也看不到 注意:我在控制器中使用手动数据尝试了$scope和'this',只有'this'起作用,这就是为什么我使用它而不是下面的$scope app.controller('AppsController', function ($http, $scope) { $http.post('/WebMethod/DoStuff',

根据要求更新,包含更多信息:

我有一个调用web方法的控制器,我希望返回的JSON绑定到控制器中名为applications的变量。警报正确显示JSON,但我在视图中什么也看不到

注意:我在控制器中使用手动数据尝试了$scope和'this',只有'this'起作用,这就是为什么我使用它而不是下面的$scope

app.controller('AppsController', function ($http, $scope) {
$http.post('/WebMethod/DoStuff', {}).
 success(function (data, status, headers, config) {
     alert(data);
     this.applications = data;
 })
}
我的看法是这样的

<div class="container" ng-controller="AppsController as appCtrl">
<div class="row" ng-repeat="application in appCtrl.applications">

<div class="col-xs-6 applicationName" ng-click="appCtrl.expand($index)">{{application.name}}</div>
</div></div>

这不是你所期望的。试试这个:

app.controller('AppsController', function ($http, $scope) {
  var self = this;
  $http.post('/WebMethod/DoStuff', {}).
   success(function (data, status, headers, config) {
       alert(data);
       //or you can use $scope.applications = data; instead 
       self.applications = data;
   })
}

有关Javascript中此
的解释,请参阅。

您使用的是
controllerAs
语法,这意味着您不将变量放在控制器中的
$scope
上,而是放在控制器实例本身上

将数据放在
上是正确的,但您必须保持对实例本身的引用,因此需要执行以下操作:

app.controller('AppsController', function ($http, $scope) { // you probably don't need to inject the $scope
   var ctrl = this;
   $http.post('/WebMethod/DoStuff', {}).
    success(function (data, status, headers, config) {
        alert(data);
        ctrl.applications = data;
   });
}

这是可行的,出于某种原因,我还必须用JSON.parse()包装数据。感谢您的回复,通过您的链接对“这一点”进行了非常有益的了解,这也是我选择此答案的原因。
app.controller('AppsController', function ($http, $scope) { // you probably don't need to inject the $scope
   var ctrl = this;
   $http.post('/WebMethod/DoStuff', {}).
    success(function (data, status, headers, config) {
        alert(data);
        ctrl.applications = data;
   });
}