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>