2014-02-26 33 views
3

是不是可以在ASP.NET MVC 4视图中将@Model传递给ng-init?当我像data-ng-init=init(@Model)这样做时,它在init()函数中未定义。如何将@Model传递给Angular ng-init

$scope.init = fuynction(model){ 
    console.log(model); // prints undefined 
} 

顺便说一句,我是AngularJs的新手。提前感谢任何帮助。

+2

记住,角是在浏览器上运行,并且只知道客户端边JavaScript。要使用模型,您需要将'@ Model'序列化为JavaScript可以理解的内容。 –

回答

5

使用Newtonsoft.Json程序集或类似程序将您的模型序列化为json字符串,并将序列化结果传递给data-ng-init。

17

正如我所评论的,您需要在您的服务器端对象(例如@Model)和客户端对象之间进行转换。

例如,如果你只是想用的@ModelName属性,你可以做这样的事情:

<div ng-init="init('@Model.Name')"></div> 

$scope.init = function(name){ 
    console.log(name); // prints value of name 
} 

注意,即使在这个简单的例子,它是必要的格式@Model.Name转换为JavaScript字符串(通过引用它)。

也许,您不想使用整个整个@Model对象。最好只选择你想要的字段并单独传递它们。

如果您需要访问服务器上的大量数据,建议使用$http服务并对数据进行服务器调用。

+7

即使当我传递@ Model.Name它仍然为空。我使用了这个:'data-ng-init =“init(@ JsonConvert.SerializeObject(Model))'。它工作。 – Beginner

+0

你需要额外的东西来使用@JsonConvert吗? – Winnemucca

2

inlcude的@using ProjectApp.Models则数据初始化NG-= “的init(@ Newtonsoft.Json.JsonConvert.SerializeObject(型号))”

相关问题