簡體   English   中英

AngularJS在視圖中不顯示JSON響應

[英]AngularJS not displaying JSON response in view

根據要求更新,並提供更多信息:

我有一個調用Web方法的控制器,我希望將返回的JSON綁定到控制器中稱為應用程序的變量中。 警報可以正確顯示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>

像JSON

[
{
    name: "Application 1",
    alerts: "2",
    status: "Red",
    notifications:  [
        {
            header: "Notification Header 1",
            updateType: "New",
            message: "hello world",
            startTime: "11:00",
            endTime: "12:00"
        }              
    ],
    expanded: false
}]

this不是您所期望的。 嘗試這個:

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;
   })
}

請參閱“ this”關鍵字如何工作? 在Javascript中this進行解釋。

您正在使用controllerAs語法,這意味着您不會將變量放在控制器的$scope上,而是放在控制器實例本身上。

放置在數據this是正確的,但你必須保持參照實例本身,所以你需要這樣做:

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;
   });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM