2016-07-24 34 views
0

我想通過ajax獲取記錄並使用AngularJS顯示。 但是我的代碼甚至沒有調用控制器動作在Asp.net中使用AngularJS循環json數據MVC

我想這個代碼..

<div ng-controller="MyCtrl"> 
<div ng-repeat="result in products"> 
    {{result.ProductName}} 
</div> 
</div> 

阿賈克斯:

function MyCtrl($scope) { 
    $.ajax({ 
    url: "/Products/Get/", 
    type: "POST", 
    success: function (data) { 
     // Success message 
     var myApp = angular.module('myApp', []); 
     $scope.products = data; 
    }, 
    error: function() { 
     // Fail message 
    }, 
    }); 
} 

我使用this post,使其工作。

+0

你不必控制器'MyCtrl' –

回答

2

你的方法是錯誤的。 您應該使用angularJS的控制器指令調用服務來使用json數據。

<script type="text/javascript"> 
    var app = angular.module('myApp', []); 
    app.controller('MyCtrl', function ($scope, $http) { 
     $http.get('/Products/Get/').success(function (data) { 
      $scope.products = data; 
     }); 
    }); 
</script> 

我前幾天寫過一篇關於同樣的文章。 你可以通過here。這可能會有所幫助。

+0

由於'success'是*推薦*您應該使用'then'而不是「成功」。 – developer033

0

你需要angularjs聲明module名,不要忘了在你的身體或HTML添加模塊名稱tag..like這<body data-ng-app="app">,然後嘗試這樣的:

<script> 
var app = angular.module('app',[]); 

app.controller('MyCtrl',function($scope,$http){ 

bindData(); 
function bindData(
    // it will be nice, if this code your separate to file service...  
    $http.get('/Products/Get').success(function (callBack) { 
      $scope.products = callBack.data; 
    }); 
); 
}); 

</script> 

和最佳實施這樣的:

// in controller, injected you service name like this.. 
app.controller('MyCtrl',function($scope,$http ,myServices){ 

bindData(); 
function bindData(
    var promiseGet = myServices.GetAll(); 
    promiseGet.then(function(callBack){ // success 
    $scope.products = callBack.data; 

    }  
,function(error){ // error 
    console.log(error); 
    }); 
);  

});

app.service('myServices',function($http){ 
var vm = this; 
vm.GetAll = function(){ 
     return $http.get('/Products/Get'); 
    } 
}); 

,並鍵入不POST,如果你想在AJAX功能數據..