如何控制和响应ngapp之外的事件

时间:2015-01-23 02:07:56

标签: angularjs

我正在尝试在SharePoint上构建一个角度应用程序(此问题与SharePoint无关)。

我有一个页面,其中有一个div具有angular app指令(它是一个带有一堆文本框的表单)。该页面上有其他组件,它们位于ngapp之外,如Ribbon控件,我特别无法控制它。

通常,如果它是一个jquery应用程序,我会编写document.ready函数并使用SharePoint javascript api将我的自定义组件添加到功能区,并连接任何所需的事件,如保存,取消。

如果可能的话,我想用angularjs来完成类似的事情。问题是因为它们位于ngapp之外我不明白如何初始化和连接事件。

具体而言,我想知道如何在下面完成。

a)初始化功能区按钮,它位于ngapp外部。我无法控制html的细节。我只能告诉api准备好添加一个按钮。总之,我想在dom准备初始化一些驻留在ngapp之外的UI控件时调用一些代码。

b)当用户点击该按钮时,我希望我的应用程序对此作出反应。

我想知道它是否可行。

例如:

<body>
<div>
//some area I do not have direct control over but would like to 
//initialize and react to events in angular
</div>  
<div ng-app="myApp">
</div>

1 个答案:

答案 0 :(得分:0)

首先要做的事情。 1初始化你的ribons按钮的方式与使用角度应用程序的方式相同,如果你愿意,可以使用jquery,jquery和angular play一起使用,所以没有伤害 除了在按钮事件中添加这个代码的和平

如果使用jquery

var rootScope=angular.element($('[ng-app]')[0]).scope()

这将为您提供应用程序的rootScope,如果您想将值传递给应用程序,可以将值附加到rootScope或使用

rootScope.$broadcast() 

在任何情况下广播事件总是记得使用

rootScope.$apply()

否则,角度不会立即意识到这些变化。

还有其他方法,使用应用程序注入器获取服务或值并在那里进行更新, 您还可以设置localStorage值并使用angular来观察这些值。但是第一种方法是最直接的方法