加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在控制器之间传递数据

发布时间:2020-12-17 08:50:27 所属栏目:安全 来源:网络整理
导读:我说要学习AngularJS,来自许多不同的MV *框架。 我喜欢的框架,但我有麻烦在控制器之间传递数据。 假设我有一个屏幕有一些输入(input.html)和一个控制器,让我们说InputCtrl。 在此视图上有一个按钮,将您带到另一个屏幕,让我们说使用控制器ApproveCtrl批
我说要学习AngularJS,来自许多不同的MV *框架。
我喜欢的框架,但我有麻烦在控制器之间传递数据。

假设我有一个屏幕有一些输入(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);  
   }

>它将像Controller-首先工作。
您首先创建控制器,有机会将其置于正确的状态;然后创建视图。

现在,在AngularJS,我处理这样:

var self = this;
 onClick = function(){
          self.$locationService.path('approve');       
 }

>这就像View-first。
你说到哪个视图/路由来导航,Controller是由框架创建的。

我发现很难控制创建的控制器的状态,并传递数据到它。
我看到并尝试了以下方法,但都有它自己的问题在我看来:

>将共享服务注入InputCtrl& ApproveCtrl并将所有要共享的数据放在此服务上

>这看起来像一个肮脏的工作;共享服务中的状态变为全局状态,而我只需要它将数据传递到ApproveCtrl
>这个共享服务的生命周期比我需要的更长 – 只是为了传递数据到ApproveCtrl

>传递$ routeParams中的数据

>当传递了很多参数时,这会变得很杂乱

>使用$ scope事件

>在概念上,这不是我会使用事件 – 我只需要传递数据到ApproveCtrl,没有事件是
>这是相当麻烦;我必须先发送一个事件给父母,然后将它广播给它的孩子

我在这里缺少什么?我创造了太多的小控制器?
我试图从其他框架持有太多的习惯在这里?

在结构方面AngularJS比MVC更多模块化。

Classic MVC描述了3个简单的层,它们以这样的方式相互交互,即控制器使用视图模型化(而模型不应该直接使用View,反之亦然)。

在Angular中,您可以有多个,一些完全可选的实体,它们可以通过多种方式在彼此之间进行交互,例如:

这就是为什么有多种方式在不同的实体之间传达您的数据。您可以:

>使用difference between this and $scope在控制器之间直接发送消息
>发送消息using events
>发送消息using shared system(注意:与上述相同的链接,回答显示两种技术)

要么

>使用AJAX后端发送邮件
>使用外部系统发送信息(如MQ)

…还有很多。由于其多样性,Angular允许开发人员/设计师选择他们最舒适的方式并进行。我建议阅读AngularJS Developer Guide,在那里你可以找到一些常见问题的祝福的解决方案。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读