问题标签 [angularjs-scope]
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.
data-binding - AngularJS:如果元素具有 ngModel 和自定义指令,则两种方式数据绑定失败
我做了两个指令来在 AngularJS 中设置自定义错误消息:
错误 -> 显示表单的错误消息
error-message -> 在输入上设置自定义错误消息
出于某种原因,每当我将error-message
指令添加到元素时,ng-model 绑定不再有效(但验证有效)。
见这里http://jsfiddle.net/apohl/A8Vgk/111/
请帮忙 :)
angularjs - AngularJS - 指令范围未在元素上设置 ng-class
我有一个数据表:
$scope.dndElemClass = 'on-drag-enter'
我的目标是通过在元素的ondragenter
事件侦听器上分配给表格一个阴影:
该onDragEnter
指令如下:
尽管$scope.dndElemClass
在ondragenter
和ondragleave
事件侦听器中分配了值,但<table>
似乎没有识别该值并分配类,因为没有出现阴影。
到目前为止,我已经测试过,如果我在指令的控制器属性中设置类,我在上面的代码中将其分配为空白,它确实可以识别该值,所以我知道它会从指令中接受它。将控制器中设置的类作为测试,如果我触发ondragenter
侦听器,它将删除该类。我还确认了使用日志记录$scope.$apply()
正确分配的值scope.dndElemClass
,但无论出于何种原因,当在事件侦听器中设置时$scope.$apply()
,表的ng-class
属性将无法识别变量分配并认为它是空的。
更新:
根据 Josh 的评论,我清理了代码,这样我就不必$apply
在事件侦听器回调中分配变量。
仍然没有运气。我可以验证它正在执行带有日志记录的回调,但没有运气让变量分配被表的ng-class
属性识别。
更新2:阅读AngularJS关于 ngClass 的文档 后,我更加困惑。对我来说,我认为这就像将您想要的类的名称(s in a array)设置为当前控制器(或者在我的情况下,指令的)中的变量一样简单$scope
,然后像在任何地方一样指定该变量的名称else 在元素的ng-class=""
属性中。但正如我正在阅读的那样,当人们使用表达式或切换类名时,它似乎要复杂得多。
使用切换的想法,我分叉了我的 plunker,$scope.dndElemClass
根据用户是否触发dragenter
或dragleave
. 我还包括$scope.$apply()
了很好的衡量标准,因为我发现我不了解angular.bind()
over .addEventListener
or的优势.ondragenter = function() {};
。无论如何,这一切都没有导致表的类像我期望的那样被设置。
angularjs - 如何在 AngularJS 中停止 $broadcast 事件?
是否有一种内置方法可以阻止$broadcast
事件沿着作用域链向下移动?
事件传递的事件对象$broadcast
没有stopPropagation
方法(如$rootScope 上的文档所述)。但是,此合并的拉取请求表明$broadcast
事件可以stopPropagation
调用它们。
angularjs - 为什么 ng-style 不适用于与自定义指令相同的元素?
我正在尝试在自定义指令标签上应用 ng-style 属性,有点像这样:
在控制器内部,我有:
这似乎不起作用。当我检查 HTML 'MyStyle' 时没有呈现。当我在常规 div 上应用相同的 ng 样式标签时,它会正确呈现。
为什么 ng-style 不适用于自定义指令标签?
angularjs - 来自外部 js 函数的 AngularJS 访问范围
我正在尝试查看是否有一种简单的方法可以通过外部 javascript 函数访问控制器的内部范围(与目标控制器完全无关)
我在这里看到了其他几个问题
angular.element("#scope").scope();
将从 DOM 元素中检索范围,但我的尝试目前没有产生正确的结果。
这是jsfiddle:http: //jsfiddle.net/sXkjc/5/
我目前正在经历从普通 JS 到 Angular 的过渡。我试图实现这一目标的主要原因是尽可能保持我的原始库代码完整;节省了我将每个功能添加到控制器的需要。
关于如何实现这一目标的任何想法?也欢迎对上述小提琴发表评论。
angularjs - AngularJS 在指令模板中评估 $rootScope 变量
我有一个创建输入字段的指令。我需要将此输入字段的 ng-model 属性设置为 $rootScope 变量的值。这背后的原因是我希望输入字段在布局中,并根据加载的页面绑定到不同的模型。我以为我会在每个控制器中设置这个全局变量并在指令中访问它。
ATM 变量是硬编码的
和指令
它被渲染为
输入字段中的文本是 mymodel 变量的值。console.log 显示
任何人都可以对这个问题有所了解吗?
javascript - 定义隔离范围时指令行为发生变化
我有一个 javascript 网格库 slickgrid 的指令。
http://plnkr.co/edit/KWZ9i767ycz49hZZGswB?p=preview
我想要做的是将选定的行传回控制器。所以我想使用隔离范围(使用'=')来获得控制器和指令之间的双向绑定。
如果我在没有任何范围声明的情况下定义指令,一切正常:
但是,如果我取消注释上面的行(app.js 中的第 19-21 行),它看起来就像 $scope.$watch 正在监视 attrs.data 对象正在调用重绘,但 attrs.data 被传入未定义。
我的分析可能是错误的,但我不确定为什么定义范围会导致这种情况。有人可以解释为什么会这样吗?
.内森。
javascript - 如何访问由 $resource get() 填充的 AngularJS 控制器中的数组?
我无法访问 AngularJS 控制器中的数组,但它可以在视图中使用。
在控制器中:.results
返回未定义
在视图中:.results
返回推文数组
angularjs - AngularJS:从模型数组拼接模型元素时,不会更新 ng-repeat 列表
我有两个控制器,并通过 app.factory 函数在它们之间共享数据。
单击链接时,第一个控制器在模型数组 (pluginsDisplayed) 中添加一个小部件。小部件被推送到数组中,并且此更改反映到视图中(使用 ng-repeat 显示数组内容):
该小部件建立在三个指令之上,k2plugin、remove 和 resize。remove 指令将跨度添加到 k2plugin 指令的模板。单击所述跨度时,共享数组中的右侧元素将被删除Array.splice()
。共享数组已正确更新,但更改未反映在视图中。但是,当添加另一个元素时,在删除之后,视图会正确刷新,并且不会显示先前删除的元素。
我怎么了?你能解释一下为什么这不起作用吗?有没有更好的方法来做我想要用 AngularJS 做的事情?
这是我的 index.html:
这是我的 main.js:
angularjs - 指令不插值,在模板字符串中
我正在尝试有条件地构建模板。我得到了一个带有一些 div 和 span 的 k2plugin 指令。根据 pluginui 属性,我想在模板末尾插入另一个指令。下面我的代码会插入除 pluginui 之外的所有内容。例如,最后一个 div 会导致:
{{pluginui}} 是文字,而它应该插入以触发另一个指令。有趣的是,如果我将 {{pluginui}} 放在同一行的其他位置(例如在标签之间,它会被插值。
我怎么了?