2014-02-26 68 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(型號))」

相關問題