我打算学习来自许多不同的MV *框架的AngularJS。我喜欢框架,但是在控制器之间传递数据时遇到了麻烦。
假设我有一个带有一些输入(input.html)的屏幕和一个控制器,比方说InputCtrl。 此视图上有一个按钮,可将您带到另一个屏幕,例如,使用控制器ApproveCtrl批准(approve.html)。 此ApproveCtrl需要来自InputCtrl的数据。在较大的应用程序中,这似乎是非常普遍的情况。
在我以前的MV *框架中,这将像(伪代码)一样处理:
var self = this; onClick = function() { var approveCtrl = DI.resolve(ApproveCtrl); approveCtrl.property1 = self.property1; approveCtrl.property1 = self.property2; self.router.show(approveCtrl); }
现在,在AngularJS中,我这样处理:
var self = this; onClick = function(){ self.$locationService.path('approve'); }
我发现很难控制创建的Controller的状态并将数据传递给它。我已经看到并尝试了以下方法,但是我认为所有方法都有其自身的问题:
我在这里想念什么吗?我会创建太多小型控制器吗?我是否在这里过多地坚持其他框架的习惯?
就结构而言,AngularJS比MVC更模块化。
经典MVC描述了3个简单的层,它们相互交互,以便控制器将模型与View缝合在一起(模型不应该直接与View一起使用,反之亦然)。
在Angular中,您可以有多个完全可选的实体,它们可以通过多种方式相互交互,例如:
这就是为什么有多种方法在不同实体之间传递数据的原因。您可以:
this``$scope
要么
…还有更多。由于其多样性,Angular允许开发人员/设计人员选择最适合自己的方式进行下去。我建议你阅读AngularJS开发指南,你可以找到 祝福 解决一些常见问题。