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>
