[英]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.