我遇到了我认为常见的场景,其中我使用 MVC 模式(特别是 ASP.NET 的 MVC 框架)用于 Web 应用程序,前端使用 AngularJS。我的问题是我有一个特定的值,它是传递给我的视图的模型的一部分,我也想在我的 Angular 控制器的 $scope 中使用它,最好是在控制器初始化后立即使用。
如何做到这一点是之前已经提出并回答的问题。有一个明显的候选人:ngInit
. 然而,在某些时候,Angular 更新了他们的文档,似乎是对这种特定想法的警告:
唯一合适的用途
ngInit
是为 的特殊属性设置别名ngRepeat
,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit
在作用域上初始化值。
建议的替代方案不是很相关。
当然,我还可以想到其他解决方法。例如,视图可以将值插入到ngModel
隐藏输入的指令中。或者我可以直接忽略警告并使用ngInit
。但是我能想到的任何东西要么是做同样事情的更丑陋的方式ngInit
,要么显然更糟。
归根结底,对我来说似乎显而易见的解决方案显然是错误的这一事实可能表明我的心态与 Angular 的应有方式不一致。所以我的问题不是“我该如何处理这种情况”,而是:
- 我应该如何处理或避免这种情况?
- 为什么我不应该使用
ngInit
?
澄清一下,因为从前两条评论来看,这并不清楚:这是针对部分或大部分页面直接作为 MVC 视图提供服务的情况,Angular 仅提供某些特定功能。我想传递给 Angular 控制器的数据已经传递给模型中的视图。我不希望 Angular 控制器然后必须向服务器发出自己的 get 请求,只是为了获取不同格式的视图已经可用的相同参数。