问题标签 [isolated-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 投票
18 回答
561175 浏览

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

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

以下是一些相关的片段:

  • HTML

    /li>
  • 从窗格指令:

    /li>

有几件事我没有得到:

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

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

0 投票
2 回答
50335 浏览

angularjs - AngularJS:指令范围内 = & @ 之间的区别?

在指令中创建一个隔离作用域可以让我们将外部作用域映射到内部作用域。我们已经看到了六种不同的映射到属性的方法:

  1. =属性
  2. &attr
  3. @attr
  4. =
  5. &
  6. @

这些范围映射选项中的每一个都有什么作用?

0 投票
2 回答
3384 浏览

angularjs - 如何将 ng-click 绑定到自定义指令并调用父函数?

我们正在使用 Angular 1.4.2,我正在尝试使用 ng-click 从指令中获取计数值,将其传递给函数,然后将其传递给父控制器。经过一番努力,它在 plunker 中工作,但不幸的是,当我尝试将此功能移回主代码时,我无法让控制器绑定到隔离范围。

应该很简单,但是我尝试将当前控制器注入指令并尝试创建一个新控制器,但是当我按下按钮时没有任何反应。

这是代码:

模板:

脚本:

这是我试图在主代码库中修改的模板代码:

这是我在指令中使用现有控制器作为父控制器的地方。它是在路由中定义的,而不是在 ng-controller 中定义的,并且已经用于此视图。

但是,它显然没有正确绑定,因为我从未使用 ng-click 命中指令或此函数。

就像我说的,我尝试在模板中添加一个新的控制器,然后我尝试将现有的控制器注入到指令中,但都没有奏效。我从指令中取出模板并尝试使用 ctrl-fn 将 ng-click 直接放入模板中,但我不知道如何将点击与对指令的 ctrl-fn 属性的调用连接起来都在模板中?这里的想法是将模板移动到它自己的 html 文件中并从指令中引用它,如:模板:“myFile.html。我试图尽可能地封装它以使其成为可重用的组件。

我没有太多使用自定义指令。

这是plunker的直接链接。

0 投票
2 回答
125 浏览

angularjs - 在 AngularJS 中,如果子指令无法访问其直接父级的作用域,那么它会继承其最近的、非隔离的祖先的作用域吗?

我有两个例子支持上述说法——

1) 当使用 $scope ( http://plnkr.co/edit/kFM77mVReS7AUwZsNzCV?p=preview ) -

2)使用控制器时(http://plnkr.co/edit/zmIRa1t87ZIMDS6X5rNo?p=preview)-

两个代码的输出都是 -我是 Directive1,这表明directive3继承了directive1 的范围它不会访问directive2的范围,因为它具有隔离范围),这证明我假设隔离范围会破坏它的父指令和它的子指令之间的继承链,因此它的任何子指令都不能访问它的任何祖先指令的范围。

我在这里遗漏了什么还是我的范围继承概念完全错误?

0 投票
3 回答
349 浏览

angularjs - AngularJS - 将值从隔离范围指令传递给另一个元素

有没有办法将布尔值(dataLoading)从隔离范围指令传递到另一个元素,以在登录操作期间加载数据时显示进度条?

索引.html

login.component.js

login.controller.js

0 投票
2 回答
95 浏览

angularjs - 有没有办法在隔离范围内使用控制器范围变量而不在 html/jsp 中定义

下面是说明隔离作用域场景的代码。

我们可以在 HTML 中添加以下代码以访问指令中隔离范围内的 customer.name

现在的问题是我们是否需要在隔离范围内访问多个控制器对象。我们需要在 HTML 中提及所有这些,还是有一种方法可以直接在 JS 中访问它们。?

0 投票
0 回答
59 浏览

angularjs - 从没有隔离范围的控制器调用指令函数

有没有一种方法可以在不使用隔离范围或事件的情况下从父控制器调用指令中定义的函数?

0 投票
0 回答
17 浏览

angularjs - 本地范围属性和传入的属性值是否可以在具有隔离范围的 angularjs 指令中互换使用

我正在 使用函数参数跟踪 Dan Wahlin 隔离范围。我在这篇文章中有一些模棱两可的地方。由于该站点没有响应,因此我选择了堆栈溢出。我是 javascript/angular 世界的新手,非常欢迎详细回复。

  1. 当我使用datasource时,代码执行得很好。但是根据文章,如果我使用,customers那么我会得到异常无法读取未定义的属性推送。
  2. 当我在 chrome 中看到选择了自定义指令的范围时,我看不到datasourceand add,而是看到customersand addCustomer。为什么在隔离范围datasourceadd不可用?如果我看到 childscope,那么我可以在隔离绑定中看到 thedatasource和 the 。add这是什么意思?
  3. 控制器(在指令内定义)范围可以访问隔离范围吗?如何?
  4. 如何controllerAs在指令控制器中使用。

这是源代码。

我想知道在这种情况下我是否遗漏了任何东西,或者这篇文章是无意的错误。

0 投票
1 回答
109 浏览

angularjs - 为什么 $scope.info 在自定义指令中的 ng-change 绑定较晚

标签:

指示

控制器

例如,在文本框上键入时hello。控制器不会$scope.info.M_id在第一次更改时绑定。假设我输入he然后$scope.info.M_id只绑定h

0 投票
1 回答
247 浏览

angularjs - 我们如何在隔离范围函数中传递变量

我有如下指令-

在指令控制器中,我从具有隔离范围的控制器中绑定 saveMe() 函数,如下所示 -

}

到目前为止一切正常。

我在指令中添加了一个 uibModal 并打开一个弹出窗口以获取名称。名称来自 $scope.my_name 变量。现在我想在函数 saveMe() 中传递这个名称。如果我直接传递像 saveMe($scope.my_name); 这样的变量 它在控制器功能中显示未定义。以下是控制器功能 -

你们能帮助我如何将 my_name 从模态传递到 saveMe 方法。提前致谢