В приведенном ниже коде я пытаюсь добавить кнопку на этапе компиляции и назначил ng-click методу из области. Во время фазы связывания через отладку я обнаружил, что "compiledEle" содержит кнопку, а затем ng-click не вызывает метод области.
angular.module("app", [])
.controller("ctrl1", function($scope){
$scope.myModelObj = {
name: 'Ratnesh',
value: 100
};
})
.directive("dirOne",function($compile){
return {
restrict: 'E',
scope: {
myModel : "="
},
compile: function(ele){
ele.append("<button ng-click=\"showAlert()\">click ME</button>")
return {
post: function($scope, compiledEle){
$scope.showAlert = function(){
alert("The button is clicked");
};
}
};
}
};
});
В чем причина того, что метод области не привязывается к кнопке, добавленной на этапе компиляции, но то же самое можно связать, если я нахожусь в шаблоне /templateUrl. Также метод get bind, если на этапе связывания мы включаем строку:
$компиляции (compiledEle.contents()) ($ масштаб);)
Также он будет привязан к методу, если вместо добавления "$ scope.showAlert" в фазе связывания мы уже имеем метод в контроллере!!!
.controller("ctrl1", function($scope){
$scope.myModelObj = {
name: 'Ratnesh',
value: 100
};
$scope.showAlert = function(){
alert("The button is clicked");
};
})
метод компиляции заключается в том, чтобы манипулировать DOM и фазой связывания связывать скомпилированный html с областью. Таким образом, мы можем добавить новый элемент в DOM во время компиляции и метод новой области в фазе связывания, так где же мое ожидание становится неправильным?