2015-12-21 29 views
3

目前,我的viewModel從我的控制器傳遞到我的視圖,它是填充列表。我可以在我的視圖中引用我的模型,就像Model一樣。如何使用角度模塊在我的視圖中識別我的模型對象?

但是,如果我想要做這樣的事情:

<table style="margin-top:20px" cellpadding="2" cellspacing="2" border="1"> 
     <tr> 
      <th>First Name</th> 
      <th>Last Name</th> 
     </tr> 
     <tr ng-show="users != null" ng-repeat="user in users"> 
      <td>{{user.FirstName}}</td> 
      <td>{{user.LastName}}</td> 
     </tr> 

    </table> 

用戶沒有定義或當調試我的看法雖然「模型」是,它有我「正在尋找正確的價值觀的認可。我熟悉剃刀語法,通過Razor獲取模型或檢查模型,但是如果我想要使用ng-repeat做一個foreach循環,我該如何確保自己的控制器有正確的模型參考?

其中用戶是模型我從持續存在的數據中獲取數據。

+0

你不能用角用你的模型屬性,因爲這些都是渲染的服務器端和角度渲染客戶端。 –

+0

如何將我的模型數據從服務器傳遞到客戶端?我如何讓Angular知道我的模型? –

+0

[看到這個](http://stackoverflow.com/questions/21391402/access-model-in-javascript-asp-net-mvc-razor?answertab=votes#tab-top) –

回答

1

Razor在服務器上執行,角度在客戶端。所以你不能簡單地在你的客戶端代碼中訪問你的服務器端模型。

在剃鬚刀視圖中,您可以做的是,序列化模型並創建數據的json表示形式,並使用value提供程序將此對象注入角度控制器。

在Razor視圖

所以,

@model YourViewModel 
<div ng-app="app" ng-controller="ctrl as vm"> 
    <table style="margin-top:20px" cellpadding="2" cellspacing="2" border="1"> 
     <tr> 
      <th>First Name</th> 
      <th>Last Name</th> 
     </tr> 
     <tr ng-show="vm.users != null" ng-repeat="user in vm.users"> 
      <td>{{user.Name}}</td> 
      <td>{{user.Name}}</td> 
     </tr>  
    </table> 
</div> 
@section Scripts{ 
    <script src="~/Scripts/YourAngularController.js"></script>  
    <script> 
    var m = angular.module("app") 
     .value("pageModel",@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model))); 

    </script>  
} 

而在你的角度控制器,它是在YourAngularController.js文件,

var app = angular.module("app", []); 
var ctrl = function (pageModel) { 

    var vm = this; 
    vm.users = pageModel; //assuming pageModel is a list of users 

}; 
app.controller("ctrl", ctrl); 
相關問題