javascript - 在 Angular-js 指令的链接函数中编写指令

标签 javascript angularjs angularjs-directive

我在 angular.js 中定义了一个指令。该指令有一个链接函数和一个 Controller 函数,并且没有模板,因此所有 View 都是在链接函数中生成的。在链接函数中我正在执行以下操作:

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.

它不起作用。如果我点击按钮,它什么也不做。如果我不是在代码中的链接函数中执行此操作,而是使用模板执行此操作,那么它会起作用。由于某种原因,我需要在链接函数中使用 jquery 进行一些操作。我应该怎么办?无论如何,有没有办法让这项工作正常进行,或者我必须同时使用模板和链接功能并在那里组合内容?

最佳答案

要使用$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 中。这将使您的按钮点击正常工作。

关于javascript - 在 Angular-js 指令的链接函数中编写指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818908/

相关文章:

javascript - 找不到模块 npm 脚本的导入功能

javascript - 如何使用 Angular JS 更改类的属性

javascript - 在 uib-tab 中添加带有 active 和 ng-repeat 的选项卡

angularjs-directive - Dart 的 Web 组件与 Angular 的指令

javascript - Firefox 中的默认事件对象?

javascript - 相当于 Angular 2 中的 Controller

javascript - P5绕圈移动物体未能摧毁旧物体

html - 使用 ion-scroll 更改 ionic 列表项的 css

angularjs - 如果最高优先级指令没有,则元素不会获得隔离范围

javascript - ng-repeat动态完成后的Angular JS回调