问题标签 [angularjs-directive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - 在AngularJS中链接MVC
我在 AngularJS 中有一个基本应用程序。该模型包含许多项目和这些项目的相关标签。我想要实现的是过滤显示的项目的能力,以便只显示那些具有一个或多个活动标签的项目,但是我在弄清楚如何从视图中操作模型方面运气不佳。
JS 可在http://jsfiddle.net/Qxbka/2获得。这包含到目前为止我设法达到的状态,但我有两个问题。首先,该指令尝试调用toggleTag()
控制器中的方法:
但没有调用该方法。其次,我不确定如何更改输出部分ng-repeat
,使其仅显示具有一个或多个活动标签的项目。
任何关于我做错了什么以及如何使它工作的指针都将不胜感激。
更新 我更新了指令中的方法直接传递数据项,即
并且还在toggle()
指令中创建了一个方法。通过这样做,我可以进行操作data
,它会反映在状态 HTML 中,但是如果这是否是正确的方法,我将不胜感激(我感觉不太正确)。
仍然坚持如何在更新标签值时重新评估输出。
javascript - event.preventDefault() 不适用于 angularjs 应用程序中的 routeChangeStart
希望任何 angularjs 大师都可以帮助我。这是我的 angularjs 代码
当数据脏时,它会在浏览器后退按钮单击中发出警报,但在单击取消或确定时,它仍会完成路线更改。似乎event.preventDefault()
无法正常工作。任何人都可以指出什么可能是错的
javascript - 角度输入格式化程序/解析器指令和插值属性?
我正在尝试编写一个可配置的指令,该指令应用于需要 ngModel 的输入元素,并为 ngModel 添加解析器和格式化程序函数。
我遇到的问题是我似乎无法将插值传递到指令中,同时支持 ngModel 绑定。例如,我希望能够以两种方式之一使用我的指令:
传递文字参数:
或从当前范围传递插值参数:
如果我在指令定义中读取链接函数的属性参数,我可以在第一次使用中获取 attributes.myDirective 的值,但在第二次使用中 myDirective 的值是未定义的。
现在,如果我在指令定义中添加一个隔离范围:
然后在上面的场景中定义并插值了 scope.myDirective,但是现在 ngModel 坏了。我的解析器/格式化程序函数的输入参数未定义。发生了什么事,我该如何实现我想要的行为?
指示:
angularjs - 使用动态类名从自定义指令中的 Angular 元素获取 CSS
我有一个自定义指令,它使用链接函数中元素的背景颜色:
HTML 片段:
当我最初编写此代码时,我为标签使用了一个静态类名(这就是我在 CSS 中设置背景颜色的方式)。现在我需要这些指令有一个动态的类名,这突然使得无法从元素中获取背景颜色,因为类名尚未应用于它。
如何在 AngularJS 中以惯用方式完成此操作?
javascript - 如何测试指令控制器功能?
我的指令控制器中有一个函数,我正在尝试测试但找不到任何资源。我在每个之前
这是抛出一个错误 TypeError: Object # has no method 'datePickerChange'
javascript - 防止 angularjs 应用程序中的重定向行为
当用户尝试单击浏览器后退按钮并且表单上有脏数据时,它会显示确认。
这是角度js控制器代码
但是如何防止重定向
javascript - 在 AngularJS 中,如何使用指令来创建具有更改变量名的模板?
我正在使用 AngularJS 创建一个问卷表单,并且我正在模板化不同类型的问题,我必须保持我的 HTML 轻量级。
HTML:
JS:
当我在输入标签ng-model="{{valvar}}"中使用时,会出现编译错误。
当我尝试改用ng-click="{{valvar}} = 0"时,我没有收到编译错误,但是当我单击单选按钮时,我获取 testVar 值的显示语句永远不会起作用。
当我点击按钮时,我将如何解决这个问题,以便我的 HTML 的最后一行正确更新为 testVar 的值?
我正在使用 AngularJS 和 Bootstrap。我对这两个框架都很陌生,所以我不确定这是否是最好的方法。
angularjs - 以角度更改我的指令的值
我有这个指令
每次我更新 scope.treeData,我的指令都不会更新。有谁知道如何从我的控制器更新我的指令?
谢谢
angularjs - 在 AngularJS 中编写指令时,我如何决定是否需要新的作用域、新的子作用域或新的隔离作用域?
我正在寻找一些指导方针,可以用来帮助确定在编写新指令时使用哪种类型的范围。理想情况下,我想要类似于流程图的东西,它引导我完成一堆问题并弹出正确的答案——没有新的新范围、新的子范围或新的隔离范围——但这可能要求太多了。这是我目前的一套微不足道的指导方针:
- 如果将使用指令的元素使用 ng-model,请不要使用隔离范围
请参阅我可以将 ng-model 与隔离范围一起使用吗?以及
为什么格式化程序不适用于隔离范围? - 如果指令不修改任何范围/模型属性,请不要创建新范围
- 如果指令封装了一组 DOM 元素(文档说“复杂的 DOM 结构”)并且指令将用作元素,或者在同一元素上没有其他指令,则隔离范围似乎工作得很好。
我知道在元素上使用具有隔离范围的指令会强制同一元素上的所有其他指令使用相同的(一个)隔离范围,所以这不会严重限制何时可以使用隔离范围吗?
我希望 Angular-UI 团队中的一些人(或其他编写过许多指令的人)可以分享他们的经验。
请不要添加简单地说“为可重用组件使用隔离范围”的答案。
angularjs - 指令定义对象的“要求”是什么?
require - 要求将另一个控制器传递到当前指令链接函数中。require 需要传入指令控制器的名称。如果找不到这样的控制器,则会引发错误。该名称可以带有前缀:
- ? - 不要引发错误。这使得 require 依赖项是可选的。
- ^ - 也在父元素上寻找控制器。
以上是官方文档中的定义。这里的歧义是什么是“指令控制器”。
以angularjs-ui bootstrap 项目中的 tabs 指令为例。
该pane
指令具有require: '^tabs'
,其中tabs
是其父元素上指令的名称,而附加到该指令的控制器的名称是TabsController
。从我自己对上述定义的解释来看,它应该require: '^TabsController'
不是require: '^tabs'
,这显然是错误的。请告诉我我的理解中缺少什么。