猿问
下载APP

请教大神angularjs控制器之间怎么通讯?

angularjs控制器之间怎么通讯


一只名叫tom的猫
浏览 74回答 3
3回答

若吾皇

angular2我没有用过,只针对我用过的1.2-1.5的版本来回答这个问题吧。据我所知controller之间是不能通信的。因为angular的设计初衷和推荐的实践都是针对单页应用的——所以也不存在着通信的可能。我能想到的便是在页面中多个tab页之间的数据和事件交互。以前我们在做类似的功能时,是通过自己编写的基于angular的框架来实现的——由框架管理了一个对于所有tab页都可见的对象实例,以此来实现“跨(tab)页”传递数据,并在新的页面初始化时到这里查询是否有传递给“我”的数据。

慕工程0101907

看看html页面上有没有加入ng-controller=“YourController” 这样的属性看看html页面上的ng-controller属性中的名字跟你的控制器脚本中的名字大小写是否一致看看html页面上是否载入了控制器脚本文件看看控制器脚本加载之前,是否已经加载了angular.js核心库文件

千万里不及你

指令和控制器的交互<!DOCTYPE html><html ng-app="MyController"><head><meta charset="utf-8"><title>指令复用</title></head><body><div ng-controller="MyCtrl"><loader>滑动加载</loader></div></body><script src="js/angular-1.3.0.js"></script><script src="js/directive-controller.js"></script></html>上面的代码平淡无奇,有个控制器有个指令(loader),下面可以看到我们通过 directive创建了这个指令,并且我们通过link的方法给他赋值鼠标事件(mouseenter)。var myModule = angular.module('MyController',[]);myModule.controller('MyCtrl',function($scope){$scope.loadData = function(){console.log("加载数据...");}})myModule.directive('loader',function(){return{restrict:'AE',link:function(scope,element,attr){element.bind('mouseenter',function(){scope.loadData();})}}})我们来看看运行的结果,ok,我们打印出来 "加载数据..."
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答