javascript - Dodijeli ASP.NET MVC model AngularJS opsegu


Ispod je kod mog prikaza (javascript kod je u prikazu, samo privremeno za testiranje).

Želio bih dodijeliti ASP.NET MVC model (@Model) AngularJS opsegu ($scope.person)

Kako to mogu učiniti?

Hvala,

Pogled

@model MyApp.Person

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

myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
    $scope.person = ?????
}]);
</script>

Ažuriranje 1 : Pokušao sam ovaj kod, u JS datoteci :

var myApp = angular.module('myApp', []);

myApp.controller('personController', ['$scope', '$http', function ($scope, $http) {
    $scope.person = @Html.Raw(window.person);
}]);

U datoteci prikaza :

<script>
    @{
        var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    }
    window.person = serializer.Serialize(Model);
</script>

Dobivam 2 pogreške:

ReferenceError: serializer is not defined (on windows)
window.person = serializer.Serialize(Model);

SyntaxError: illegal character (it's the @)
$scope.person = @Html.Raw(window.person);

Odgovor #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>

Odgovor #2

Nisam siguran hoće li ovo raditi s Angularom.

Možete koristiti Json.Encode Metoda pretvara podatkovni objekt u niz koji je u JavaScript Object Notation (JSON) formatu.

window.person = @Html.Raw(Json.Encode(Model)); //Store data in global variable.

U svom Angular kodu koristi,

$scope.person = window.person

Međutim, najbolje rješenje će biti kreirati uslugu i dohvatiti podatke o osobi koristeći tu uslugu.

Potpuni 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>