问题标签 [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.

0 投票
4 回答
113482 浏览

javascript - 使用 ng-include 时失去作用域

我有这个模块路线:

主页 HTML:

partial1HTML:

HomeCtrl

addLine函数$scope.lineTextis 中undefined,这可以通过添加ng-controller="HomeCtrl"to来解决partial1.html,但是它会导致控制器被调用两次。我在这里想念什么?

0 投票
7 回答
303858 浏览

angularjs - AngularJS 控制器中的“this”与 $scope

AngularJS 主页的“创建组件”部分,有这个例子:

注意select方法是如何添加到 的$scope,但addPane方法是添加到this. 如果我将其更改为$scope.addPane,则代码会中断。

该文档说实际上存在差异,但没有提及差异是什么:

以前版本的 Angular(1.0 RC 之前)允许您this与该方法互换使用$scope,但现在不再是这种情况了。在范围上定义的方法内部this并且$scope可以互换(角度设置this$scope),但在控制器构造函数内部则不能。

AngularJS 控制器是如何this工作的?$scope

0 投票
1 回答
42956 浏览

javascript - 如何在 AngularJS 中进行双向过滤?

AngularJS 可以做的一件有趣的事情是将过滤器应用于特定的数据绑定表达式,这是一种方便的应用方式,例如,模型属性的特定于文化的货币或日期格式。在范围上具有计算属性也很好。问题是这些特性都不适用于双向数据绑定方案——从范围到视图只有单向数据绑定。这似乎是一个非常优秀的图书馆的明显遗漏——或者我错过了什么?

KnockoutJS中,我可以创建一个读/写计算属性,它允许我指定一对函数,一个被调用以获取属性的值,一个在设置属性时被调用。例如,这使我能够实现文化感知输入 - 让用户键入“$1.24”并将其解析为 ViewModel 中的浮点数,并在输入中反映 ViewModel 中的更改。

我能找到与此类似的最接近的事情是使用This 允许我在属性更改$scope.$watch(propertyName, functionOrNGExpression);时调用一个函数。$scope但这并不能解决例如文化感知输入问题。当我尝试在方法本身中修改$watched属性时,请注意问题:$watch

( http://jsfiddle.net/gyZH8/2/ )

当用户开始输入时,输入元素会变得非常混乱。我通过将属性拆分为两个属性来改进它,一个用于未解析的值,一个用于解析的值:

( http://jsfiddle.net/XkPNv/1/ )

这是对第一个版本的改进,但有点冗长,请注意parsedValue范围更改的属性仍然存在问题(在第二个输入中键入一些内容,这会parsedValue直接更改。注意顶部输入没有更新)。这可能发生在控制器操作或从数据服务加载数据中。

有没有更简单的方法来使用 AngularJS 来实现这个场景?我是否缺少文档中的某些功能?

0 投票
3 回答
42512 浏览

angularjs - 在给定父范围的情况下获取 Angularjs 中的所有子范围

我想知道如何获取给定父范围的所有子范围的列表。我可以从范围的属性中找到 $$childHead、$$childTail、$$nextSibling 和 $$prevSibling。

我现在使用的方法是从父级获取 childHead,然后使用 nextSibling 获取下一个子级,直到 nextSibling 为空。

有更好的方法吗?鉴于我想对所有孩子调用一个方法 [getModel],还有更好的方法吗?

0 投票
28 回答
454429 浏览

angularjs - AngularJS:在调用 $scope.$apply() 时防止错误 $digest 已经在进行中

我发现自从以 Angular 构建应用程序以来,我越来越需要手动将页面更新到我的范围。

我知道这样做的唯一方法是$apply()从我的控制器和指令的范围内调用。这样做的问题是它不断向控制台抛出错误,内容如下:

错误:$digest 已经在进行中

有谁知道如何避免此错误或以不同的方式实现相同的目标?

0 投票
19 回答
634111 浏览

angularjs - 如何使用 AngularJS 访问浏览器控制台中的 $scope 变量?

我想$scope在 Chrome 的 JavaScript 控制台中访问我的变量。我怎么做?

我在控制台中既看不到$scope也看不到我的模块名称myapp作为变量。

0 投票
2 回答
21613 浏览

angularjs - 无法在指令范围内访问 rootscope var

下面的函数在根作用域中定义了一个变量。

下面指令中的 html 取决于 rootscope 中的一个变量 -

但是上面的代码不起作用。如果我在指令范围内直接定义“按钮”变量,它会起作用。

0 投票
18 回答
561175 浏览

angularjs - AngularJS指令范围内的'@'和'='有什么区别?

我已经仔细阅读了有关该主题的AngularJS文档,然后摆弄了一个指令。这是小提琴

以下是一些相关的片段:

  • HTML

    /li>
  • 从窗格指令:

    /li>

有几件事我没有得到:

  • 为什么我必须使用"{{title}}"with'@'"title"with '='
  • 我也可以直接访问父范围,而不用属性装饰我的元素吗?
  • 文档说“通常希望通过表达式将数据从隔离范围传递到父范围”,但这似乎也适用于双向绑定。为什么表达路线会更好?

我发现了另一个显示表达式解决方案的小提琴:http: //jsfiddle.net/maxisam/QrCXh/

0 投票
1 回答
1948 浏览

angularjs - 为什么格式化程序不适用于隔离范围?

为什么格式化程序不适用于隔离范围?这是角度错误还是我做错了什么?

这包含隔离范围并且不起作用:http: //jsfiddle.net/YbdXQ/56/

这不包含孤立和范围工作正常:http: //jsfiddle.net/YbdXQ/57/

0 投票
5 回答
42360 浏览

angularjs - 在 AngularJS 中编写指令时,我如何决定是否需要新的作用域、新的子作用域或新的隔离作用域?

我正在寻找一些指导方针,可以用来帮助确定在编写新指令时使用哪种类型的范围。理想情况下,我想要类似于流程图的东西,它引导我完成一堆问题并弹出正确的答案——没有新的新范围、新的子范围或新的隔离范围——但这可能要求太多了。这是我目前的一套微不足道的指导方针:

我知道在元素上使用具有隔离范围的指令会强制同一元素上的所有其他指令使用相同的(一个)隔离范围,所以这不会严重限制何时可以使用隔离范围吗?

我希望 Angular-UI 团队中的一些人(或其他编写过许多指令的人)可以分享他们的经验。

请不要添加简单地说“为可重用组件使用隔离范围”的答案。