Angular中的全局事件处理程序
Global event handler in Angular
我不确定我应该如何在我的angular应用程序中处理事件。
我在我的。run()函数中设置了一些$rootScope属性:
.run(['$rootScope', '$state', '$stateParams', '$location',
function($rootScope, $state, $stateParams, $location) {
$rootScope.something = "something_";
}
]);
我的HTML看起来像:
<body class="dashboard" ng-app="app">
<select name="active_project" id="active_project">
<option value=""></option>
</select>
<div id="content" ui-view></div>
</body>
现在-当用户改变下拉值(active_project)我想改变$rootScope。对新人有价值的东西
我该如何做这样的事?
编辑:我不想让它在单个控制器中。如你所见,这个下拉菜单是OUTSIDE ui-view。handler应该在控制器之外。否则,我将被迫在整个应用程序的每个控制器中处理此更改。
基本上,您需要编写一个ng-change来更新更改。你的HTML将变成:
<body class="dashboard" ng-app="app" ng-controller='myController'>
<select ng-change='selectChanged()' ng-model='myModel' name="active_project" id="active_project">
<option value=""></option>
</select>
<div id="content" ui-view></div>
</body>
你还需要定义一个控制器来监听这个变化:
app.controller('myController', ['$scope', '$rootScope', function(scope, rootScope){
scope.selectChanged = function(){
rootScope.something = scope.myModel;
alert(rootScope.something);
}
}]);
我还添加了一个功能小提琴的链接。
在给你解决方案之后,我想补充一点,在rootscope中有价值不是一个好主意。如果你张贴你想要达到的目标,这里可能有人可以更好地指导你。
您可以使用ng-selected
,并将选择ng-model
分配给$rootScope
:
JSFiddle
HTML:<div ng-app="app" ng-controller="dummy">
<select name="active_project" ng-selected="selectIt()" ng-model="somethingFromSelect" id="active_project">
<option value="hello">hello</option>
<option value="world">world</option>
</select>
{{something}}
</div>
JS:
var app = angular.module("app", []);
app.run(['$rootScope', '$location',
function($rootScope, $location) {
$rootScope.something = "";
}
]);
app.controller('dummy', ['$rootScope', '$scope', function ($rootScope, $scope) {
$scope.selectIt = function () {
$rootScope.something = $scope.somethingFromSelect;
};
}]);
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default