我在angular.js中定义了一个指令。该指令具有链接功能和控制器功能,没有模板,因此所有视图都在链接功能中生成。在链接功能中,我正在执行以下操作:
var button=angular.element("<a>");
button.addClass("ng-click: previousLink();");
//previousLink() is a function defined in the scope.
//I am doing it like that, because before that one I attempted to do:
//button.prop("ng-click", "previousLink()");
//button.text("Previous");
//but for some reason it was showing on html as <a>Next</a>, without adding the property.
它不起作用。如果我点击按钮它什么都不做。如果,而不是在代码中的链接函数中执行此操作,而不是使用模板,它可以工作。出于某种原因,我需要在link函数中使用jquery进行一些操作。我该怎么办?反正有没有使这项工作,或者我是否必须使用模板和链接功能并在那里结合?
答案 0 :(得分:1)
要使用$compile
,您需要使用以下内容关注现有代码:
$compile(button.contents())(scope);
如果您希望它是动态的,您可以将其置于$watch
内,如此:
link: function (scope, ele, attrs) {
scope.$watch(attrs.yourval, function(html) {
var button=angular.element("<a>");
button.addClass("ng-click: previousLink();");
$compile(button.contents())(scope);
});
}
$compile
将范围(作为参数提供)附加到您定义的html。这将使您的按钮点击正常工作。