我不知道如何处理我的角度应用程序中的事件。
我在.run()函数中设置了一些$ rootScope属性:
<Grid>
<test:PickerPlugin x:Name="Picker" Grid.Column="0" />
<TextBlock Text="{Binding ElementName=Picker, Path=Hue}" />
</Grid>
我的HTML看起来像:
.run(['$rootScope', '$state', '$stateParams', '$location',
function($rootScope, $state, $stateParams, $location) {
$rootScope.something = "something_";
}
]);
现在 - 当用户更改下拉列表值(active_project)时,我想将$ rootScope.something值更改为新值。
应该如何我做这件事?
编辑: 我不想在单控制器中制作它。如您所见,此下拉列表是OUTSIDE ui-view。所以处理程序应该在控制器之外的某个地方。如果没有,我将被迫在整个应用程序的每个控制器中处理此更改。
答案 0 :(得分:1)
基本上,您需要编写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);
}
}]);
我还添加了一个功能fiddle的链接。
在给你解决方案之后,我想补充一点,在rootscope中获得价值并不是一个好主意。如果您发布您想要实现的目标,可能会有人在这里指导您。
希望这有帮助。
答案 1 :(得分:0)
您可以使用ng-selected
功能将选择ng-model
分配给$rootScope
:
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;
};
}]);