javascript - Tilldela ASP.NET MVC-modell till AngularJS-scope
Nedan är koden för min vy (javascript-koden är i vyn, bara tillfälligt för testning).
Jag vill tilldela ASP.NET MVC-modellen (@Model) till AngularJS-scopen ($scope.person)
Hur kan jag göra detta?
Tack,
Utsikten
@model MyApp.Person
<script>
var myApp = angular.module('myApp', []);
myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
$scope.person = ?????
}]);
</script>
Uppdatering 1 : Jag provade den här koden, i JS-filen :
var myApp = angular.module('myApp', []);
myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
$scope.person = @Html.Raw(window.person);
}]);
I vyfilen :
<script>
@{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
}
window.person = serializer.Serialize(Model);
</script>
Jag får 2 fel:
ReferenceError: serializer is not defined (on windows)
window.person = serializer.Serialize(Model);
SyntaxError: illegal character (it's the @)
$scope.person = @Html.Raw(window.person);
Svar #1
<script>
@{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(Model);
}
var myApp = angular.module('myApp', []);
myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
$scope.person = @Html.Raw(json);
}]);
</script>
Svar #2
Jag är inte säker på om detta kommer att fungera med Angular.
Du kan använda Json.Encode-metoden som konverterar ett dataobjekt till en sträng som är i JavaScript Object Notation (JSON)-format.
window.person = @Html.Raw(Json.Encode(Model)); //Store data in global variable.
I din Angular-kod använd,
$scope.person = window.person
Men den bästa lösningen kommer att vara att skapa en tjänst och hämta personuppgifterna med hjälp av tjänsten.
Fullständig kod
@model MyApp.Person
<script>
window.person = @Html.Raw(Json.Encode(Model)); //Store data in global variable.
var myApp = angular.module('myApp', []);
myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
$scope.person = window.person
}]);
</script>
