在 AngularJS 中重复按下按钮 div
Repeating a div on button press in AngularJS
我正在学习这里的教程:https://fourtonfish.com/blog/2014-01-dynamically-add-directives-in-angularjs-no-jquery/
尝试在按下按钮时将信息附加到 div。我已将该按钮添加到我的主页,但是当我单击它时,我收到:
angular.js:14324 TypeError: element.bind is not a function
我希望得到一些关于如何纠正此问题的建议,如果有的话,甚至可能是更好的方法。我觉得使用 element.bind 是一种 jquery 方法,使用 Angular?
可能有更好的方法
main.html
<div id ="fullForm" ng-controller="MainCtrl" >
<button-add></button-add>
<div id="test">test</div>
</div>
main.js
'use strict';
/**
* @ngdoc function
* @name jsongeneratorApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the jsongeneratorApp
*/
angular.module('jsongeneratorApp')
.controller('MainCtrl', function ($scope) {
.directive('buttonAdd',function(){
return{
restrict:'E',
templateUrl:'scripts/directives/addbutton.html'
}
})
.directive('addfields',function($compile){
console.log("directive called.");
return function(element,attrs){
element.bind("click",function(){
angular.element(document.getElementById('test')).append($compile("<div>Test</div>"))
})
}
})
addbutton.html
<div class="row rowmargin">
<div class="col-sm-9">
</div>
<div class="col-sm-3">
<button addfields class="btn"> Add New Variable</button>
</div>
</div>
Element是第二个参数,不是第一个。第一个是指令的 $scope
对象。
您可能对 angular 的依赖注入感到困惑,但指令的 link
功能不适用于依赖注入。
如果您在签名中添加范围参数,它将起作用:
// You missed the first parameter 'scope'
return function(scope, element, attrs){
element.on("click",function(){
$compile("<div>Test</div>")(scope, function(compiled){
// callback
angular.element(document.getElementById('test')).append(compiled);
});
});
}
另请注意 bind
函数 is deprecated,因此您应该使用 on
代替。
我正在学习这里的教程:https://fourtonfish.com/blog/2014-01-dynamically-add-directives-in-angularjs-no-jquery/
尝试在按下按钮时将信息附加到 div。我已将该按钮添加到我的主页,但是当我单击它时,我收到:
angular.js:14324 TypeError: element.bind is not a function
我希望得到一些关于如何纠正此问题的建议,如果有的话,甚至可能是更好的方法。我觉得使用 element.bind 是一种 jquery 方法,使用 Angular?
可能有更好的方法main.html
<div id ="fullForm" ng-controller="MainCtrl" >
<button-add></button-add>
<div id="test">test</div>
</div>
main.js
'use strict';
/**
* @ngdoc function
* @name jsongeneratorApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the jsongeneratorApp
*/
angular.module('jsongeneratorApp')
.controller('MainCtrl', function ($scope) {
.directive('buttonAdd',function(){
return{
restrict:'E',
templateUrl:'scripts/directives/addbutton.html'
}
})
.directive('addfields',function($compile){
console.log("directive called.");
return function(element,attrs){
element.bind("click",function(){
angular.element(document.getElementById('test')).append($compile("<div>Test</div>"))
})
}
})
addbutton.html
<div class="row rowmargin">
<div class="col-sm-9">
</div>
<div class="col-sm-3">
<button addfields class="btn"> Add New Variable</button>
</div>
</div>
Element是第二个参数,不是第一个。第一个是指令的 $scope
对象。
您可能对 angular 的依赖注入感到困惑,但指令的 link
功能不适用于依赖注入。
如果您在签名中添加范围参数,它将起作用:
// You missed the first parameter 'scope'
return function(scope, element, attrs){
element.on("click",function(){
$compile("<div>Test</div>")(scope, function(compiled){
// callback
angular.element(document.getElementById('test')).append(compiled);
});
});
}
另请注意 bind
函数 is deprecated,因此您应该使用 on
代替。