当前位置: 首页 > 面试题库 >

AngularJS绑定jQuery qTip2插件

洪博艺
2023-03-14
问题内容

我试图弄清楚如何用角度绑定工具提示的内容。我有一个看起来像这样的指令:

script.js

var myApp = angular.module('myApp', []);

myApp.directive('initToolbar', function(){
    return {
        restrict: 'A',
        link: function(scope, element, attrs)
        {
            $(element).qtip({
                content: {
                    ajax:
                    {
                        url: 'button.html'
                    }
                },
                position: {
                    my: 'bottom left',
                    at: 'bottom middle',
                    target: $(element)
                },
                hide: {
                    fixed : true,
                    delay : 1000
                }
            });
        }
    }
});

它从这里使用qTip2插件

我的index.html看起来像这样(请注意,在实际文件中,我已经包括了所有源文件,为了避免混乱,我只是未将其粘贴在此处):

<body>
    <div initToolbar>
        <p>
            Hover over me. Hover over me. Hover over me.
        </p>
    </div>
</body>

button.html

<div ng-controller="myController">
    <button ng-click="someFunction()">Click me</button>
</div>

如您在指令代码中看到的。将button.html加载到工具提示中,但是这会阻止angular正常运行-将button.html加载到弹出窗口中时,ng-
click不起作用。那是因为角度不知道这一点。

我也知道button.html是有效的,因为只需添加

<ng-include src="'button.html'">

到index.html正常工作(即单击按钮执行someFunction())

所以我的问题是:

如何将工具提示的实际内容与angular绑定?如果没有内容,是否有一种方法可以绑定工具提示,以便角度了解它?我对$ scope。$
apply()很熟悉,但是我不太确定如何在这里使用它。


问题答案:

更新1 当从angular到HTML到javascript时,请确保从蛇形案例到camelCase。因此,init- toolbar在html中将其翻译为initToolbarjavascript。

这是一个工作示例:http :
//plnkr.co/edit/l2AJmU?p=preview

的HTML

<div init-toolbar="">
  <p>
    Hover over me. Hover over me. Hover over me.
  </p>
</div>

Button.html

<div>
  <button ng-click="someFunction()">Click me</button>
</div>

JAVACRIPT

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.someFunction = function() {
    $scope.name = 'FOO BAR';
  };
});

app.directive('initToolbar', function($http, $compile, $templateCache){
    return {
        restrict: 'A',
        link: function(scope, element, attrs)
        {
          $http.get('button.html', {cache: $templateCache}).
            success(function(content) {
              var compiledContent = $compile(content)(scope);

              $(element).qtip({
                content: compiledContent,
                position: {
                  my: 'bottom left',
                  at: 'bottom middle',
                  target: $(element)
                },
                hide: {
                  fixed : true,
                  delay : 1000
              }
            });

          });

        }
    }
});

原版的

按钮不起作用的原因是因为angular不知道它应该绑定到它。您可以使用$
compile告诉angular做到这一点。我对qTip2插件知之甚少,但是如果您加载模板,然后对其进行编译,
$compile(template)(scope);然后将其移交给qTip2,您将获得预期的结果。



 类似资料:
  • 问题内容: 我需要将动态参数传递给applet。 这是我的控制器: 这是我的观点,参数base64在控制器中定义为“ abcd” 当我运行页面时,我在p标签中看到字符串’abcd’,但是applet参数的值只是“ {{base64}}”。 我该如何解决? 问题答案: 我解决了传递整个applet声明的问题。这样,它可以正常工作。 控制器: 视图:

  • 问题内容: 我目前正在将一个大型应用程序移植到基于HTML5的Web应用程序上-我已经开始在AngularJS中构建该应用程序并享受AngularJS框架的功能- 目前,我遇到了一个问题: 我有一个给我jQuery Datepicker的指令,但是对模型的绑定似乎不起作用。 http://jsfiddle.net/9BRNf/ 我可能会误解指令的工作方式,并想了解我是否可以修补对框架的这一部分理解

  • 问题内容: 我知道这是一个古老且可以回答100次的问题,但是随着最新版本的发布,事情变得越来越复杂,因此引起了我很多困惑。我想知道在指令中为属性声明数据绑定的四种当前可用方法之间的区别是什么。特别: 文字装订 双向装订 方法绑定(尽管有人称它为单向绑定) 单向绑定 我对最后两个之间的差异特别感兴趣,因为它们似乎具有重叠的功能,而且我真的无法说出它们之间的差异和优势。 问题答案: 这是有关隔离范围的

  • 问题内容: 我刚刚从KnockoutJS切换到AngularJS,但在AngularJS中找不到KnockoutJS的“ with”数据绑定。 这是KnockoutJS中的代码片段。“ with”绑定创建一个新的绑定上下文,以便将后代元素绑定到指定对象的上下文中。 AngularJS是否有类似上下文的内容? 问题答案: 我所不知道的..这是我能做的最好的事情:

  • 问题内容: 我有这个reprohttp://embed.plnkr.co/nVCmukG5abpi1Y4ZHkrq,当我单击“ Title3”并在文本框中输入一个值时显示,尽管输入的值显示在UI中,当我单击“单击”按钮时,什么也没有绑定到范围属性$ scope.test。 我不知道ng-switch有什么问题,或者我做错了什么。帮助表示赞赏!!! http://embed.plnkr.co/nVC

  • 为了更好地掌握AngularJS,我决定使用其中的一个示例,特别是简单地在Todo-example中添加一个“完整”的屏幕,当用户输入了5个todo,它使用一个switch-case切换到另一个div。代码可以在http://jsfiddle.net/fwchu/1/,如果有用的话。 但是,似乎每个switch-case都有自己的作用域($scope.todotext不可用),但是在本例中,可以从