问题标签 [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.
angularjs - AngularJS - AlertFactory 打开对话框行为
我正在创建一个 AlertFactory,因为 ui.bootstrap.dialog 在我的应用程序中不起作用。
所以我输入以下代码:http: //jsfiddle.net/Premier/BHqKB/17/
如果您单击“打开对话框”按钮,它会非常有效:屏幕上会出现一个包含我的消息的对话框。
我还在 keydown 上注册了一个监听器:监听器触发一个广播事件,在该事件上注册了一个范围相关的函数。该函数调用 openDialog 来显示对话框。通过这种方式,角度不会插入参数,并且警报会显示为 {{title}} 占位符。
我的代码有什么问题?
谢谢你。
css - 使用范围内的变量全局更新 CSS 样式
我目前正在构建一个可以选择更改主题的应用程序。在这种情况下,主题仅由更改应用程序中几个关键元素的颜色组成。
所以目前,在所有需要主题颜色的元素上,我都给了它们 css 类has-main-color
。
在控制器中,我从 Web 服务中获取他们想要的颜色,并将其设置为$scope.mainColor = color;
.
所有这些都可以正常工作,但我遇到的问题是我找不到将这种颜色应用于has-main-color
类的合适方法。
目前,我正在尝试以下操作:
正如您可能猜到的那样,这不太好用。
那么使用 AngularJS 解决这个问题的最佳方法是什么?
angularjs - AngularJS中控制器和指令之间的共享范围
我创建了一个指令来包装 jQuery 插件,并将插件的配置对象从控制器传递给指令。(作品)
在配置对象中是一个我想在事件上调用的回调。(作品)
在回调中,我想修改控制器的 $scope 上的一个属性,它不起作用。由于某种原因,Angular 无法识别该属性已更改,这使我相信回调中的 $scope 与控制器的 $scope 不同。我的问题是我不知道为什么。
谁能指出我正确的方向?
应用程序.js
html
angularjs - angularjs:将焦点设置在指令内先前隐藏的输入元素上
我得到了一个角度指令,它在可视化之前编译了一些 html 代码。在 html 中,只有当scope.isEditShown
is时才会显示隐藏的输入true
:
<input ng-show='isEditShown' type='text' value='{{content.name}}' class='title_edit'/>
scope.titleChange
调用函数时会出现输入。这个函数(绑定到一个 ng-dblclick 指令)只是将 true 设置为scope.isEditShown
并尝试focus()
在输入元素上调用 jQuery 的方法(之前存储在链接器函数的作用域中scope.input = $("input:text", ae);
:
简而言之,我想在双击某物时可视化先前隐藏的输入,并立即获得焦点。需要立即获得焦点,因为输入在失去焦点时被隐藏(我希望用户能够立即编辑输入内容。当用户点击离开时,输入被隐藏)。
问题是我似乎无法以编程方式将焦点放在输入元素上。经过实验,我发现在scope.isEditShown = true;
执行时,输入还不可见(= angular js在DOM中没有显示),并且将焦点设置scope.input.focus();
为隐藏的输入没有任何作用。当输入元素最终显示出来时,它是没有焦点的。
做我想做的事的角度方式是什么?我什么时候可以确定我的输入会显示出来,什么时候可以focus()
有效地调用它?注意:如果我scope.$apply()
在关注输入之前使用,我会得到$apply already in progress
异常。如果我进行安全申请,将不会给予关注。见plunkr。
(ps:我真的很想了解,所以我不会使用自动为我做的伴随库)
angularjs - AngularJS directive controllers requiring parent directive controllers?
I might be thinking about this completely backwards, but I'm trying to make three nested directives, lets call them: screen, component and widget. I want widget to be able to trigger some behavior in component, which in turn triggers some behavior in screen. So:
I can require parent components in a widget's link fn using require: "^component"
, but how do I further give components controller access to its containing screen?
What I need is the WHAT in component so when you click the widget's button it alerts "screeny!".
Thanks.
angularjs - AngularJS中带有ng-repeat范围的指令隔离范围
我有一个带有隔离范围的指令(以便我可以在其他地方重用该指令),当我将此指令与 一起使用时ng-repeat
,它无法工作。
我已阅读有关此主题的所有文档和 Stack Overflow 答案并了解这些问题。我相信我已经避免了所有常见的陷阱。
所以我知道我的代码由于ng-repeat
指令创建的范围而失败。我自己的指令创建了一个隔离作用域,并对父作用域中的对象进行双向数据绑定。我的指令将为这个绑定变量分配一个新的对象值,并且当我的指令不使用ng-repeat
(父变量正确更新)时,这可以完美地工作。但是,使用ng-repeat
时,赋值会在ng-repeat
范围内创建一个新变量,而父变量看不到更改。根据我所阅读的内容,所有这些都符合预期。
我还读到,当给定元素上有多个指令时,只会创建一个范围。并且priority
可以在每个指令中设置 a 来定义指令的应用顺序;指令按优先级排序,然后调用它们的编译函数(在http://docs.angularjs.org/guide/directive搜索单词优先级)。
所以我希望我可以使用优先级来确保我的指令首先运行并最终创建一个隔离范围,并且在ng-repeat
运行时,它重新使用隔离范围,而不是创建一个原型继承自父范围的范围。ng-repeat
文档声明该指令以优先级运行1000
。不清楚1
是更高的优先级还是更低的优先级。当我在指令中使用优先级1
时,它没有任何区别,所以我尝试了2000
. 但这让事情变得更糟:我的双向绑定变成undefined
了,我的指令不显示任何东西。
我创建了一个小提琴来展示我的问题。priority
我已经在我的指令中注释掉了设置。我有一个名称对象列表和一个名为的指令,该指令name-row
显示名称对象中的名字和姓氏字段。单击显示的名称时,我希望它selected
在主范围内设置一个变量。名称数组、selected
变量name-row
使用双向数据绑定传递给指令。
我知道如何通过在主范围内调用函数来使其工作。我也知道,如果selected
在另一个对象内部,并且我绑定到外部对象,事情就会起作用。但我目前对这些解决方案不感兴趣。
相反,我的问题是:
- 如何防止
ng-repeat
创建原型从父范围继承的范围,而是让它使用我的指令的隔离范围? - 为什么
2000
我的指令中的优先级不起作用? - 使用 Batarang,是否有可能知道正在使用什么类型的范围?
angularjs - 指令范围属性根据属性名称中断
我有一个非常奇怪的现象,即指令和隔离范围,范围内的属性工作或不工作取决于属性的命名。如果我使用
它工作得很好,正如预期的那样。但是,如果我使用:
定义的函数永远不会被分配。一个示例如下所示:
HTML:
Javascript
然后控制台会给我以下信息:
真的有可能取决于大写字母的使用吗?这将是非常“意外”的行为。
谢谢你的帮助
沙基
angularjs - 当第三方组件修改文本框值时,如何更新范围/ng-model?
我想使用颜色选择器制作一个编辑器。
这是一个简化的示例。 http://jsfiddle.net/xcUev/8/
我将颜色视为角度范围对象的属性。我使用颜色选择器使它可以选择
但是选择颜色后,它不会影响范围。
你有什么想法让它工作,比如如何影响有意地影响这个输入状态的范围。
请帮我...
javascript - 如何在 AngularJS 中观察数组的变化
我基本上想要绑定到 Backbone 集合中的“添加”和“删除”事件。我认为在 AngularJS 中基本上没有办法做到这一点,而我们目前解决的解决方法是$watch()
读取数组length
并手动比较/重新计算整个事情。这真的是酷孩子所做的吗?
编辑:具体来说,观察数组的长度意味着我不容易知道哪个元素已更改,我需要手动“区分”。
angularjs - 将 ngInclude 绑定到不同的模型
是否可以为 ngInclude 指定模型,以便在包含的模板内完成的任何更改都反映在指定的模型上。例如:
我有一个模型,例如:
和模板:
现在是否可以传递 ngInclude “成员”或任何子项并修改其各自的名称属性?我尝试将 ng-model 传递给 ng-template 但它不起作用。我尝试使用预期模型动态加载范围,但如果模型被删除,我会留下一个孤立模板。以下是jsfiddle代码:
http://jsfiddle.net/vaibhavgupta007/p7E5K/
我希望重用模板,而不是为不同的模型复制相同的模板。我已经提到了这个问题:
如何在 AngularJS 中为 ngInclude 指令指定模型?
但是这里的模型没有被删除。
编辑
到目前为止,我还没有掌握创建自定义指令的概念。但是是否会结合 ng-include 帮助创建一个新指令?