Angularjs - 使用指令添加 ng-* 属性

2024-01-08

我正在尝试将简单的 ng-mouseover 绑定添加到由指令管理的元素。但无法让它发挥作用。

@ http://jsbin.com/aqibij/2/edit http://jsbin.com/aqibij/2/edit

我尝试在添加 ng-mouseover 绑定后重新编译该元素。 directive.compile 和外部控制器运行,但directive.linker 不运行。

@ http://jsbin.com/ikebed/1/edit http://jsbin.com/ikebed/1/edit

我已将 $compile'ing 移至链接器中。它运行良好,ng-mouseover 运行良好,但在链接器中重新编译会导致无限循环,最终导致浏览器崩溃:)

如何使用指令将 ng-* 绑定添加到元素?我在这些方法中做错了什么?


我以为你和我在同一条船上,但也许你不是。不管怎样,这里有两个解决方案。我被困在了第二个。

1) 针对特定元素的指令

如果您知道您正在处理的元素将是 div、span、h1 等 - 或者它并不重要(采用一个元素并将其替换为您需要的元素)。

HTML

<div data-mydirective>
    <span>some other stuff</span>
    <div>more stuff</div>
</div>

指示

module.directive( 'mydirective', [ function() {
    return {
        restrict: "A",
        controller: function( $scope ) {
            $scope.test = function() {
                console.log('howdy');
            }
        },
        template: "<div data-ng-transclude data-ng-mouseover='test()'></div>",
        transclude: true,
        replace: true,
        link: function ( scope, element, attrs ) {

        }
    };
}]);

Outputs

<div ng-mouseover="test()" data-ng-transclude="" data-mydirective="">
    <span class="ng-scope">some other stuff</span>
    <div class="ng-scope">more stuff</div>
</div>

2) 针对非特定元素的指令

这就是我面临的问题。基本上,如果您有一个可能位于 h1、h2、span、div、nav 等上的指令,并且您想添加您的ng-*和指令中的属性。

你不能使用template因为你不知道元素是什么。不想采取h1并将其替换为div正确的?这就是我走编译路线的原因。嗯,template实际上可以是我们可以访问的函数element and attrs.

指示

module.directive( 'mydirective', [ function() {
    return {
        restrict: "A",
        controller: function( $scope ) {
            $scope.test = function() {
                console.log('howdy');
            }
        },
        template: function( element, attrs ) {
            var tag = element[0].nodeName;
            return "<"+tag+" data-ng-transclude data-ng-mouseover='test()></"+tag+">";
        },
        transclude: true,
        replace: true,
        link: function ( scope, element, attrs ) {

        }       
    }   
}]);

HTML/输出

与上面相同。改变divHTML 中的元素nav,输出将反映更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs - 使用指令添加 ng-* 属性 的相关文章

  • 使用 JS 在 Angular 中创建删除按钮的确认警报

    我有一个带有删除按钮的表单 我想创建一个单击删除按钮时弹出的确认框 删除按钮当前有效 我在 javascript 中尝试了一些方法 但没有成功 我正在使用角度 这是最好的方法吗 另外 有谁知道这方面的任何例子 我还没有找到任何有效的例子 d
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何使用 ng-repeat 复选框和 Angularjs 过滤表格

    曾几何时 这是可行的 但不知何故它被破坏了 我希望能够使用 ng repeat 生成复选框 以根据存储的数据获取所需数量的复选框 并使用它们来过滤生成的表 此外 我不希望重复复选框的相同值 我用代码做了一个plnkr div class r
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • AngularJS 仅在解析时返回两个 http get 请求

    我有一个 Angular 应用程序 在控制器中我需要调用一个发出两个 http get 请求的函数 并且我需要这个函数在解析这些值时返回这些值 我无法在 routeProvider 中解析它们 因为此函数需要在同一控制器中获取值 我展示了控
  • HTML5 URL 模式下 AngularJS 的 Flask 路由

    我有一个通过 Flask 提供服务的 AngularJS 应用程序 我使用的是 HTML5 路由模式 因此需要将多个 URL 重定向到客户端应用程序 我不确定如何进行通配符匹配才能正确执行此操作 目前我只是匹配多个级别的路径 如下所示 ap
  • 如何在点击时添加和删除活动类 - 角度方式

    我正在这样做 div class tiles div 控制器 scope select function item scope selected item scope isActive function item return scope
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • 指令中的 Angular + 茉莉花 + 模拟 $stateParams

    在指令中模拟 stateParams 的最佳方法是什么 stateParam成员会根据测试而改变 我可以使用 controller ctrl stateParams 轻松模拟控制器中的 stateParams 但不知道如何修改注入指令的 s
  • 输入类型 = AngularJS 中的数字验证

    我正在尝试验证 lt input type number gt 通过使用输入 数字 AngularJS 模块 ng 的指令 当使用数字类型的输入时 最大 或最小 属性设置为数字 例如
  • AngularJS 创建全局键盘快捷键的方式是什么?

    我想我应该使用指令 但将指令添加到正文似乎很奇怪 但监听文档上的事件 执行此操作的正确方法是什么 更新 找到 AngularJS UI 并看到their https docs angularjs org api ng directive n
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • 如何在没有分页装饰的情况下渲染 ngTable?

    在我的小型 AngularJS 应用程序中 我使用 ngTable 库渲染多个表格 只有一个可以使用分页 其他的内容总是少于一页 每个渲染的 ngTable 似乎都在表格下方添加了 10 25 50 100 选择器 对于我的大多数桌子来说
  • Angular 2 中的变更检测

    我正在将角度 1 和角度 2 集成在一起 因此我有角度 1 控制器和服务以及角度 2 组件 这些对于数据检索和存储来说工作得很好 反之亦然 下面是我的 html 页面 h3 Angular 1 service h3 div div
  • 如果特定 stateParam 为空,如何重定向到 state

    我不确定我这样做的方式是否正确 任何建议将不胜感激 我有一个餐厅选择器 用户可以从中选择一家餐厅 然后所有其他子状态加载特定于所选餐厅的内容 但我需要默认选择一个子状态 包括一家餐厅 它将根据用户最近的位置或 cookie 数据 如果他们之
  • angularjs:timeout 在 $http POST 请求中不起作用

    我的代码中有以下代码片段 它为请求设置了以毫秒为单位的超时 但即使满足超时 它也不会取消 var httpURL method URLobj method url urlString data data withCredentials tr
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br

随机推荐

  • 将文件下载到特定文件夹 python

    我可以从以下位置下载文件URL以下方式 import urllib2 response urllib2 urlopen http www someurl com file pdf html response read 我能想到的一种方法是以
  • 从流中读取数据的最有效方法

    我有一种使用对称加密来加密和解密数据的算法 无论如何 当我要解密时 我有 CryptoStream cs new CryptoStream ms cryptoTransform CryptoStreamMode Read 我必须从 cs C
  • 来自产品 ID 的 MSI 产品代码?

    我正在尝试将 MSI 产品代码 GUID 转换为用于标识 MSI 注册表项中已安装项目的产品代码 ID 有这方面的API吗 如果不是 这该怎么办 Warning Microsoft 强烈建议您不要弄乱他们的 MSI 注册表项 但如果您确实必
  • 如何删除 AWS ECS 任务定义?

    在 Amazon 的 EC2 容器服务中创建任务定义后 如何删除或移除它 It s a 已知问题 https forums aws amazon com thread jspa threadID 170378 一旦取消注册任务定义 它就会进
  • PHP:没有连接的字符串中的变量

    如果我在这个字符串中有一个变量 var echo Hello there are many vars Php 寻找variable vars代替 var 没有连接 如 Hello there are many var s 还有另一种方法可以
  • Jboss不部署战争,JBAS011006

    我需要你的帮助 我正在尝试将 WAR 部署到 Jboss Application Server 7 1 但无法实现 我通过 Web 控制台部署它 它在部署过程中冻结 没有任何错误 这是我的 server log http rghost ru
  • HTML5

    我想知道这是什么意思
  • 更好的说法是 x == Foo::A || x == Foo::B || x == Foo::C || ...?

    假设我有一堆众所周知的价值观 就像这样 但是const char 这只是一个例子 可能更复杂 const char A A B B C C D D E E F F G G 现在假设如果某个表达式的结果位于这些表达式的子集中 我想以特定的方式
  • 简单的 yacc 语法给出错误

    我有一个关于 yacc 编译器的问题 我不编译简单的 yacc 语法 这是代码部分 anbn 0 y token A B start anbn n printf is in anbn 0 n return 0 anbn empty A an
  • before(:each) 与之前

    我是 ruby on Rails 的新手 并进行测试 之间有区别吗 before each do some test code end and before do some test code end The before方法接受一个sco
  • write()-Python 3.x 中的编码字符串

    我有一个 unicode 字符串 我想将其写入文件中 在 Python 2 中我可以这样写 open filename w write s encode utf 8 但这对于 Python 3 来说失败了 显然 s encode 返回 by
  • 如何根据文本长度增加UITextview高度,如whatsapp

    我已经使用 websocket 在我的 iOS 应用程序中实现了聊天功能 它对我来说工作得很好 问题是我想增加 UITextView 的高度 而 UITableView 应该根据 UITextView 增加的高度向上移动 谁能帮我 以下是我
  • 使用过滤器返回对象中的属性值

    尝试创建一个使用 filter 但不使用 for 或 while 循环或 foreach 函数的函数 该函数将循环遍历对象数组 仅返回其属性值 例如 function getShortMessages messages return mes
  • 带有 addrinfo 结构的智能指针

    我需要处理两个结构addrinfo指针 由于我使用 C 11 进行编码 因此我必须使代码异常安全 事实上 我的构造函数可能会抛出一个runtime error 当你不再需要那种结构时 你应该调用freeaddrinfo为了释放结构内的列表
  • MailSystem.Net 删除邮件,IndexOnServer 属性 = 0

    我在用着邮件系统 NET http mailsystem codeplex com并尝试从服务器删除消息 问题是 IndexOnServer 属性为 0 我收到以下错误 Command store 0 flags silent Delete
  • 给定单词向量(而不是单词本身),获取最相似的单词

    使用gensim models Word2Vec库 您可以提供一个模型和一个 单词 您希望找到最相似单词的列表 model gensim models Word2Vec load word2vec format model file bin
  • TFS 2017 版本定义。 WinRM - IIS Web 应用程序管理任务。在“默认网站”下创建应用程序

    我正在制定一个发布定义 它将把一个网站部署到测试 IIS 服务器 Windows Server 2012 IIS 8 我想使用 IIS Web 应用程序管理任务在 默认网站 Scott 下创建和配置应用程序或虚拟目录 当我指定 默认网站 S
  • 为什么 google.load 会导致我的页面变成空白?

    嗯 这看起来很奇怪 但我找不到解决方案 为什么这个小提琴会演奏http jsfiddle net carlesso PKkFf http jsfiddle net carlesso PKkFf 显示页面内容 然后当 google load
  • PHP 友元/包可见性

    有没有办法限制 PHP 中的可见性 就像 Java 中的 包 可见性或至少 C 中的 朋友 可见性一样 维护大型 OOP 项目并且不让任何人使用代码的任何部分的最佳实践是什么 我尽可能多地使用私有和受保护的可见性 但有时这还不够 我知道这个
  • Angularjs - 使用指令添加 ng-* 属性

    我正在尝试将简单的 ng mouseover 绑定添加到由指令管理的元素 但无法让它发挥作用 http jsbin com aqibij 2 edit http jsbin com aqibij 2 edit 我尝试在添加 ng mouse