如何在我的情况下操纵一个子元素
问题描述:
我想检测一个文件点击该页面,并在一个div中操纵一个DOM。我有类似的东西如何在我的情况下操纵一个子元素
angular.module('myApp').directive('documentClick', ['$document', function($document) {
return function(scope, element, attrs) {
element.bind('click', function(e){
console.log('click')
})
}
}]);
<body ng-app="myApp" ng-controller="ctrl" document-click>
<div ng-controller='insideCtrl'>
<div id="test">
<p>inside p</p>
</div>
</div>
</body>
我想在'任何地方点击页面后'内部p'文本更改为别的东西。我该怎么做呢?谢谢。
答
你可以使用事件来做伎俩。
事件由控制器发出,您可以在您的指令中注入的唯一控制器是$rootController
。所以,让我们做吧:
// in your directive
angular.module('...')
.directive('documentClick', function ($document, $rootScope) {
return function(scope, element, attrs) {
element.bind('click', function(e){
$rootScope.$broadcast('documentClicked');
})
}
});
// in your controller
angular.module('...')
.controller('WhateverCtrl', function ($scope) {
$scope.$on('documentClicked', function() {
// here it is !
});
});
注意,我在控制器中使用$scope
,不$rootScope
原因也没有必要使用它的广告$broadcast
被发送到所有儿童的范围。 See here for more infos。
哪个部位有问题?似乎你应该很容易通过选择'test'来缩小到'p',然后得到它的唯一后代元素。那么这只是更新其文本内容的问题。不知道你到底在问什么。 – 2014-09-23 18:21:34
我想用角度来做。 – FlyingCat 2014-09-23 18:22:17