$compile 在 angularjs 中未触发 ng-click
$compile not triggering ng-click in angularjs
我正在从 angularjs 生成动态 html 元素 controller.I 使用了 $compile
使 ng-click 在 html element.But 内部工作仍然没有调用该函数。
这是我的js
var accountApp = angular.module('accountApp', ['ngRoute']);
accountApp.config(['$compileProvider',function($compileProvider )
.controller('myController',function($scope,$compile)
{
var searchHTML = '<li><a href="javascript:void(0)" data-ng-
click="setMarkerToCenterA()">'+item.title+'</a></li>';
$compile(searchHTML)($scope);
$scope.setMarkerToCenterA = function() {
alert("this alert is not calling");
}
});
}]);
我已经注入了依赖项also.Can有人告诉我为什么 ng-click 没有调用函数,即使我正在使用 $compile 吗?
可能你错过了使用 angular.element(htmlString)
解析 HTML 字符串,然后编译。
var app = angular.module('Whosebug', []);
app.controller('MainCtrl', function($scope, $compile, $sce) {
var searchHTML = '<a href="#" data-ng-click="setMarkerToCenterA()">hello</a>';
var template = angular.element(searchHTML);
$compile(template)($scope);
angular.element(document.querySelector('#container')).append(template);
$scope.setMarkerToCenterA = function() {
alert("this alert is now calling");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.9/angular.min.js"></script>
<div ng-app="Whosebug" ng-controller="MainCtrl">
<div id="container"></div>
</div>
首先你需要一个 li 元素所在的元素。
<div ng-controller="myController">
<ul id="list"></ul>
</div>
然后在你的控制器中:
var element = angular.element("#list");
element.html($compile(html)($scope));
$scope.setMarkerToCenterA = function() {
alert("Here");
};
我正在从 angularjs 生成动态 html 元素 controller.I 使用了 $compile 使 ng-click 在 html element.But 内部工作仍然没有调用该函数。
这是我的js
var accountApp = angular.module('accountApp', ['ngRoute']);
accountApp.config(['$compileProvider',function($compileProvider )
.controller('myController',function($scope,$compile)
{
var searchHTML = '<li><a href="javascript:void(0)" data-ng-
click="setMarkerToCenterA()">'+item.title+'</a></li>';
$compile(searchHTML)($scope);
$scope.setMarkerToCenterA = function() {
alert("this alert is not calling");
}
});
}]);
我已经注入了依赖项also.Can有人告诉我为什么 ng-click 没有调用函数,即使我正在使用 $compile 吗?
可能你错过了使用 angular.element(htmlString)
解析 HTML 字符串,然后编译。
var app = angular.module('Whosebug', []);
app.controller('MainCtrl', function($scope, $compile, $sce) {
var searchHTML = '<a href="#" data-ng-click="setMarkerToCenterA()">hello</a>';
var template = angular.element(searchHTML);
$compile(template)($scope);
angular.element(document.querySelector('#container')).append(template);
$scope.setMarkerToCenterA = function() {
alert("this alert is now calling");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.9/angular.min.js"></script>
<div ng-app="Whosebug" ng-controller="MainCtrl">
<div id="container"></div>
</div>
首先你需要一个 li 元素所在的元素。
<div ng-controller="myController">
<ul id="list"></ul>
</div>
然后在你的控制器中:
var element = angular.element("#list");
element.html($compile(html)($scope));
$scope.setMarkerToCenterA = function() {
alert("Here");
};