加載索引時,我得到userName
。如何將ng-Init中的值傳遞給下一個控制器
MVC控制器動作
public ActionResult Index()
{
string userName = "Current User"
return View((object)userName);
}
然後用ng-init
嘗試存儲值。
的Index.html
@model string
<!DOCTYPE html>
<html ng-app="myApp" ng-init="user='@Model'">
<body>
<div>Welcome @Model!</div>
<div ng-view=""></div>
</body>
</html>
在初始NG-View模板,我仍然可以渲染{{user}}
內容。但我想要的是將其拉入第一個角度控制器,以便在應用程序的整個生命週期中傳遞它,所以我不必再次向服務器查詢它。
我覺得這樣的事情會在第一模板工作呈現:
<div ng-init="vm.username='{{user}}'>
與具有$scope.username
的控制器。這顯然不起作用,我相信是因爲Angular呈現的順序。
關於如何在應用程序的整個生命週期中保持該用戶名值的任何好主意,如果這不起作用?
您可以隨時把東西在$ rootScope或者,更優選,在服務。這些是在應用程序的整個生命週期中都存在的單例。 – matmo
如果您將後端編寫爲使用JSON請求/響應正文的API,Angular確實最有效。如上所述,您還可以將值插入提供程序(如工廠/服務/值),然後將其注入任何需要該值的其他控制器或提供程序。這看起來相關https://docs.asp.net/en/latest/tutorials/first-web-api.html此外,特定元素的作用域通常從父到子繼承,除非該指令生成隔離範圍,在任何情況下,提供者都是注入適當價值的更加可靠的方式。 – shaunhusain
是的,它是用這種方式編寫的,提供數據的Web API。好的,所以注入服務似乎是我應該去的方式。如果你們其中一人將這個答案放在答案中,我會將其標記爲這樣。謝謝! – jlembke