gpt4 book ai didi

javascript - Angular ng-click 事件

转载 作者:行者123 更新时间:2023-12-03 12:28:36 25 4
gpt4 key购买 nike

我有这些功能:

$scope.addProduct = function($event, obj) {

var myEl = angular.element($event.target);

myEl.parent().html('<button class="btn btn-danger btn-xs" ng-click="removeProduct('+ obj.id +')">Remove from Widget</button>');

};

$scope.removeProduct = function(id) {
console.log('Remove ->' + id);

};

当我单击“addProduct”时,它可以工作,但是当我单击“removeProduct”时,它不起作用。看起来它没有监听我添加的新按钮的点击。怎么解决呢?

最佳答案

为了使 ngClick 生效,您需要首先编译 HTML 并将其链接到 $scope:

.controller('someCtrl', function ($compile, $scope) {
...

$scope.addProduct = function($event, obj) {
var myEl = angular.element($event.target);
var myBtn = $compile('<button class="btn btn-danger btn-xs" ng-click="removeProduct('+ obj.id +')">Remove from Widget</button>')($scope);
myEl.after(myBtn);
};

$scope.removeProduct = function(id) {
console.log('Remove ->' + id);
};
});
<小时/>

更新:

<强> Kos Prov's comment 非常正确 - 有时您考虑解决问题,但您一开始并不认为问题是错误的。

所以,当然操作 DOM 应该是指令的责任,所以我创建了一个指令来执行您想要的操作(根据您的问题):

app.directive('removableProduct', function ($compile) { var btnTmpl = '' + “从小部件中删除”+ '';

    return {
restrict: 'A',
scope: {item: '='},
template: '<div ng-click="addProduct($event)">{{item.description}}</div>',
controller: function ($scope) {
$scope.addProduct = function (evt) {
var myEl = angular.element(evt.target);
var myBtn = $compile(btnTmpl)($scope);
myEl.after(myBtn);
};
$scope.removeProduct = function(id) {
console.log('Remove -> ' + id);
};
}
};
});
<小时/>

另请参阅此 short demo

关于javascript - Angular ng-click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com