私はAngularJSにかなり慣れていないので、ここで迷っています。
現在、私のMVCプログラムはRazorを使用して、.mdfデータベース内のすべてのデータを表示します(つまり:@ Html.DisplayFor(modelItem => item.LastName))。しかし、私は主にAngularに行きたいです。 ng-repeatを使用してすべてのモデルデータを表示しようとしていますが、そのモデルデータをAngularコントローラーに渡し、それを使用する方法がわかりません。 ng-initでJSONにモデル化しますが、正しく実行しているとは思いません(明らかに)。
ここに私のコードがあります:
// controller-test.js
var myApp = angular.module('myModule', []);
myApp.controller('myController', function ($scope) {
$scope.init = function (firstname) {
$scope.firstname = firstname;
}
});
<!-- Index.cshtml -->
@model IEnumerable<Test.Models.Employee>
@{
ViewBag.Title = "Index";
}
<div ng-app="myModule">
<div ng-controller="myController" ng-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model))">
<table>
<tr ng-repeat= <!--THIS IS WHERE I'M STUCK -->
</table>
</div>
</div>
<script src="~/Scripts/angular.min.js"></script>
<script src="~/Scripts/controller-test.js"></script>
@Scripts.Render("~/Scripts/angular.js")
シリアル化されたモデルからFirstNameを取得するために何を繰り返す必要があるのか正確にはわかりません。私はすべてのピースを手に入れたように感じますが、それらをどのように接続するのか分かりません。
Jsonオブジェクトに次のようなキーfirstName
がある場合:
{
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
]
}
次の方法で実行できます。
コントローラーで:
myApp.controller('myController', function ($scope) {
$scope.init = function (employees) {
$scope.employees = employees;
}
});
あなたの見解では:
<table>
<tr ng-repeat= "employee in employees">
<td>{{ employee.firstName }}<td>
</tr>
</table>
Darkstalker_010に感謝します!
私が混乱したのは、Angularコントローラーファイルがビューとどのように相互作用するかでした。私がしなければならなかったのは、単に.cshtmlファイル内のangular {{}}データを、通常のモデルデータ(つまり、model.AttributeName)にアクセスしようとしているかのように扱うことだけでした。
更新された動作コードは次のとおりです。
// controller-test.js
var myApp = angular.module('myModule', []);
myApp.controller('myController', function ($scope) {
$scope.init = function (employees) {
$scope.employees= employees;
}
});
<!-- Index.cshtml -->
@model IEnumerable<Test.Models.Employee>
@{
ViewBag.Title = "Index";
}
<div ng-app="myModule">
<div ng-controller="myController" data-ng-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model))">
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Title</th>
<th>Department</th>
<th>Email</th>
</tr>
<tr ng-repeat="e in employees">
<td>{{e.FirstName}}</td>
<td>{{e.LastName}}</td>
<td>{{e.Title}}</td>
<td>{{e.Department.DepartmentName}}</td>
<td>{{e.Email}}</td>
</tr>
</table>
</div>
</div>
<script src="~/Scripts/angular.min.js"></script>
<script src="~/Scripts/controller-test.js"></script>
@Scripts.Render("~/Scripts/angular.js")
書式設定なしのように見えます: