在angular-js中在指令的link函数中编写指令

时间:2014-09-13 01:12:15

标签: javascript angularjs angularjs-directive

我在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进行一些操作。我该怎么办?反正有没有使这项工作,或者我是否必须使用模板和链接功能并在那里结合?

1 个答案:

答案 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。这将使您的按钮点击正常工作。