gpt4 book ai didi

javascript - Angularjs 使用指令动态添加和删除元素

转载 作者:行者123 更新时间:2023-11-29 18:00:21 25 4
gpt4 key购买 nike

我使用指令创建联系表。最初我创建了用于显示客户表单的 customerForm 指令。在那种形式中,我有一个按钮,当我们单击添加按钮时,调用 getData 函数,该函数在内部使用 newDirective 来显示 ul 列表。为此,我使用 $compile api 来编译 html 代码。这很好,当我们点击删除按钮时,它也显示列表值和删除按钮,它称为 scope.remove() 函数。但它只删除那些。之后我无法删除任何元素(即按钮)。我不知道为什么会这样。请帮我。 jsfiddle

index.html

<div class="container">
<customer-form></customer-form>
</div>

应用程序.js

angular.module('sanshaApp', [])

.directive('newDirective', function ( $compile ){
return {
restrict: 'E',
template:
'<ul>' +
'<li>{{somoe value here}}' +
'<button ng-click="remove()">Remove</button>' +
'</li>'+
'</ul>',
link: function (scope, element, attributes) {
//called when click on Remove button
scope.remove = function () {
element.remove();
}
}
}
})
.directive('customerForm', function($compile) {

return {

scope: {

},

restrict: 'E',

transclude: true,

templateUrl: "../../views/customer-form.html",

controller: "mainCtrl",

link: function(scope, element, attrs, mainCtrl) {

scope.getData = function() {
//create new element new-directive
$newDirective = angular.element('<new-directive>');
element.append($newDirective);
//compile html DOM
$compile( $newDirective )(scope);
}
}
}
})

.controller("mainCtrl", ['$scope', function($scope) {

}])

客户表格.html

   <div class="form-group row">
<label for="name" class="col-lg-2 form-control-label">Customer name</label>
<div class="col-lg-4">
<input type="text" class="form-control" ng-model="name.aa" placeholder="customer name">
</div>
<label for="email" class="col-lg-2 form-control-label">Email address</label>
<div class="col-lg-4">
<input type="email" class="form-control" ng-model="name.email" placeholder="Email">
</div>
</div>
<div class="form-group row">
<div class="col-lg-4">
<button class="btn btn-default" value="add" ng-click="getData()">
<span class="glyphicon glyphicon-plus"></span>
</button>
</div>
</div>

最佳答案

我来解决你的问题。您的问题是指令 new-directive 没有 isolate 范围。

jsfiddle 上的实例.

angular.module('app', [])

.controller("mainCtrl", ['$scope', function($scope) {

}])

.directive('newDirective', function($compile) {
return {
restrict: 'E',
replace: true,
scope: {},
template: '<ul>' +
'<li>' +
'<button ng-click="remove()">Remove {{ind}}</button>' +
'</li>' +
'</ul>',
link: function(scope, element, attributes) {
scope.ind = Math.round(Math.random() * 100);
scope.remove = function() {
console.log(scope.ind);
element.remove();
}
}
}
})

.directive('customerForm', function($compile) {

return {

scope: {},

restrict: 'E',

transclude: true,

template: '<div>' +
'<input type="button" value="addd" name="AAA" ng-click="getData()">' +
'</div>',

controller: "mainCtrl",

link: function(scope, element, attrs, mainCtrl) {

scope.getData = function() {
$newDirective = angular.element('<new-directive>');
element.append($newDirective);
$compile($newDirective)(scope);
}

}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<customer-form></customer-form>
</div>

关于javascript - Angularjs 使用指令动态添加和删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429854/

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