Angularjs 如何在单击时获取属性值?

Angularjs 如何在单击时获取属性值?,angularjs,Angularjs,嘿,伙计们,当我点击按钮时,我需要得到按钮的数据值。我试过用这种方法,但不起作用 var app = angular.module('myApp', []); app.controller("myAppCtrl", function($scope, $attrs) { $scope.events = {} $scope.events.btnLoadMore = function() { var panel = $attrs.emptywidget;

嘿,伙计们,当我点击按钮时,我需要得到按钮的数据值。我试过用这种方法,但不起作用

var app = angular.module('myApp', []);

app.controller("myAppCtrl", function($scope, $attrs) {
    $scope.events = {}
    $scope.events.btnLoadMore = function() {
        var panel = $attrs.emptywidget;
        alert(panel);
    }
});
HTML


点击

访问该数据属性的唯一方法是通过标准DOM访问,这在控制器内部是不明智的。传递到控制器中的
$attrs
变量也不会给您太多信息,因为控制器与任何事情都没有直接关系(或者至少它不需要或不应该)

如果您需要这样做,那么您可以将
ng单击更改为

ng-click="events.btnLoadMore('#panel2')"

然后更改
btnLoadMore
函数的定义以获取参数。或者,您可以编写一个指令,该指令将被赋予该值,但这更复杂。但这取决于你想用它做什么。上面的方法应该可以使用,但是,访问该数据属性的唯一方法是通过标准DOM访问,这在控制器内部是不明智的。传递到控制器中的
$attrs
变量也不会给您太多信息,因为控制器与任何事情都没有直接关系(或者至少它不需要或不应该)

如果您需要这样做,那么您可以将
ng单击更改为

ng-click="events.btnLoadMore('#panel2')"

然后更改
btnLoadMore
函数的定义以获取参数。或者,您可以编写一个指令,该指令将被赋予该值,但这更复杂。但这取决于你想用它做什么。上面的操作应该有效,但是您也可以使用angular.element和传入$event源的组合:


点击
var-app=angular.module('myApp',[]);
app.controller(“myAppCtrl”,函数($scope,$attrs){
$scope.events={}
$scope.events.btnLoadMore=函数($event){
console.log($event);
var panel=angular.element($event.target).attr(“数据清空Widget”);
控制台日志(面板);
}
});

您还可以使用angular.element和传入$event源的组合:


点击
var-app=angular.module('myApp',[]);
app.controller(“myAppCtrl”,函数($scope,$attrs){
$scope.events={}
$scope.events.btnLoadMore=函数($event){
console.log($event);
var panel=angular.element($event.target).attr(“数据清空Widget”);
控制台日志(面板);
}
});

您可以做一些不同的事情

1) 您可以通过如下函数传入数据

ng-click="events.btnLoadMore('#panel2')"
然后将函数更改为匹配,以便:

$scope.events.btnLoadMore = function(panel) {
    alert(panel);
}
$scope.events.btnLoadMore = function(clickEvent) {
    alert(clickEvent.target.attributes['data-emptywidget'].value);
}
2) 您可以通过$event参数传入数据

ng-click="events.btnLoadMore($event)"
然后将函数更改为匹配,以便:

$scope.events.btnLoadMore = function(panel) {
    alert(panel);
}
$scope.events.btnLoadMore = function(clickEvent) {
    alert(clickEvent.target.attributes['data-emptywidget'].value);
}
3) 您只需查看传递给函数的参数

$scope.events.btnLoadMore = function() {
    alert(arguments[0].target.attributes['data-emptywidget'].value);
}

你可以做一些不同的事情

1) 您可以通过如下函数传入数据

ng-click="events.btnLoadMore('#panel2')"
然后将函数更改为匹配,以便:

$scope.events.btnLoadMore = function(panel) {
    alert(panel);
}
$scope.events.btnLoadMore = function(clickEvent) {
    alert(clickEvent.target.attributes['data-emptywidget'].value);
}
2) 您可以通过$event参数传入数据

ng-click="events.btnLoadMore($event)"
然后将函数更改为匹配,以便:

$scope.events.btnLoadMore = function(panel) {
    alert(panel);
}
$scope.events.btnLoadMore = function(clickEvent) {
    alert(clickEvent.target.attributes['data-emptywidget'].value);
}
3) 您只需查看传递给函数的参数

$scope.events.btnLoadMore = function() {
    alert(arguments[0].target.attributes['data-emptywidget'].value);
}

谢谢你,安德鲁,这个对我来说是更好的解决方案!谢谢你,安德鲁,这个对我来说是更好的解决方案!