【发布时间】:2018-08-09 19:07:39
【问题描述】:
AngularJS 的新手 - 我正在尝试创建一个函数来查找特定文本的“标记”,并将它们替换为绑定到控制器上的函数的 ng-click 指令。例如,从我的数据库中,我有很多类似这样的文本字段:
<p>Your [labor] cost is included in price</p>
我想这样结束:
<p>Your <a href="#" ng-click="showModal('labor')">labor</a> cost is included in price.</p>
用过滤器替换 [labor] 令牌没有问题,但我对如何合并 $compile 以在我的控制器上将 ng-click 绑定到 $scope.showModal() 有点迷茫。
任何帮助将不胜感激。谢谢。
我现有的过滤器:
myApp.filter('parseHtml', function ($sce) {
return function (text) {
var link = '<a href="" ng-click="getModal(\'labor\')">Labor</a>';
var replaced = text.replace(/\[labor\]/g, link);
return $sce.trustAsHtml(replaced);
};
});
在html中
<span ng-bind-html="package.price | parseHtml"></span>
控制器
myApp.controller('MainController',
function MainController($scope, $http) {
$scope.getpackage = function (slug) {
var onpackageComplete = function (response) {
$scope.package = response.data;
};
$http.get('/packages/api/' + slug + '/detail')
.then(onpackageComplete);
};
$scope.getModal = function (name) {
$scope.modalVisible = true;
if (name === 'labor') {
$scope.modalBody = '/path/to/html/snippet/ModalLabor.html';
} else if (name === '') {
$scope.modalBody = '';
}
};
}
);
【问题讨论】:
-
见stackoverflow.com/questions/42539999/…。有
$compile服务的使用示例 -
如果您看到该示例但仍然不知道如何在您的代码中执行此操作,请在您的问题中分享控制器代码,我们会为您提供帮助。没有代码很难说
-
嗨,我已经研究了这个引用的例子很长一段时间了,但仍然很迷茫,所以我从我的项目中添加了一些示例代码到原始帖子中。谢谢
标签: angularjs angularjs-directive angularjs-filter angularjs-compile