Javascript angularjs从单击的元素获取当前范围
下面是我如何通过单击获取范围。是否有更简单的方法获取子范围?谢谢Javascript angularjs从单击的元素获取当前范围,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,下面是我如何通过单击获取范围。是否有更简单的方法获取子范围?谢谢 .chatMsg(ng-repeat='chatMsg in chatLog', ng-class="{active: detailed}", ng-click="openChatDetail($event)") .text {{chatMsg.foo}} $scope.openChatDetail = function(e) { var childScope = angular.element(e.cu
.chatMsg(ng-repeat='chatMsg in chatLog', ng-class="{active: detailed}", ng-click="openChatDetail($event)")
.text {{chatMsg.foo}}
$scope.openChatDetail = function(e) {
var childScope = angular.element(e.currentTarget).scope()
if (childScope.detailed) {
childScope.detailed = false
return
}
childScope.detailed = true;
}
当聊天消息以详细模式打开时,我正在尝试向其添加活动类。在子作用域上,将事件发送到其父作用域 在父作用域上侦听并处理事件
$scope.$on('event name', function (params){});
如果我理解得很好,
chatMsg
是一个指令。这意味着您可以在指令的控制器中指定openchatdeail
方法,其中作用域将是指令的作用域
yourApp.directive('chatMsg', [
function(){
return {
...,
scope: true, /* or even better, isolated scope */
controller: function(scope, elem, attrs) {
scope.openChatDetail = function() {
...
}
}
}
}
])
为什么您没有这样做:
.chatMsg(ng-repeat='chatMsg in chatLog', ng-class="{true: 'active'}[chatMsg.detailed]", ng-click="openChatDetail(chatMsg)") .text {{chatMsg.foo}}
在您的控制器中
$scope.openChatDetail = function(item) {
item.detailed = !(item.detailed) || true;
}
请提供更多关于您尝试执行的操作的信息,因为跨越作用域将阻碍您对控制器进行单元测试的能力。可能有更好的方法,而不是直接访问子作用域。@Brocco你说得对,很抱歉我添加了这些信息。
$scope.openChatDetail = function(item) {
item.detailed = !(item.detailed) || true;
}