首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >指令中的范围

指令中的范围
EN

Stack Overflow用户
提问于 2014-09-09 06:14:08
回答 1查看 98关注 0票数 1

我对指令、Scopes和数组有问题。我所读到的是,如果我编写了一个将作用域设置为true的指令,就会得到一个与父作用域分离的新作用域。在这里,您可以在我的示例中看到我的两个指令。每个数组一个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   kdApp.directive('kdinsurancesituationamount', function kdinsurancesituationamount() {
   return {
          restrict: 'E',
          scope: true,
          template: "<span>Name  </span> " +
              "<input value='{{name1}}' ng-model='name1'>" +
              "<div ng-repeat='isa in insuranceSituationAmountList1'>" +
              "<span>Amount {{$index}} </span> " +
              "<input value='{{isa}}' ng-model='isa'>" +
              " <br /></div>"

      };
  });
kdApp.directive('kdinsurancesituationamount2', function kdinsurancesituationamount2() {
      return {
          restrict: 'E',
          scope: true,
          template: "<span>Name  </span> " +
              "<input type='text' maxlength='9' value='{{name2}}' ng-model='name2'>" +
              "<div ng-repeat='isa in insuranceSituationAmountList2'>" +
              "<span>Index {{$index}} </span> " +
              "<input type='text' maxlength='9' value='{{isa.amount}}' ng-model='isa.amount'>" +
              " <br /></div>"

      };
  });

当我有像$scope.name1 = "John“这样的变量时,它工作得很好,但是当我有数组时,我不明白它是如何工作的。看看我的控制器。我有两个不同的例子,insuranceSituationAmountList1和insuranceSituationAmountList2。他们的工作方式也不一样。对于ng-重复,我在输入标签中写出数组,每个输入标记都有一个ng模型属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    kdApp.controller('InsuranceSituationAmountController', function ($scope) {
      $scope.insuranceSituationAmountList1 = ["1000", "2000", "3000"];
      $scope.insuranceSituationAmountList2 = [{
          amount: "4000"
      }, {
          amount: "5000"
      }, {
          amount: "6000"
      }];
      $scope.name1 = "John";
      $scope.name2 = "John";
  });

即使我在指令中将作用域设置为false,数组insuranceSituationAmountList1也不会更新父作用域。但是对于字段name1,它的工作方式是我想要的。当作用域为false字段时,name1更新父作用域,而当作用域设置为true时,则不会。

即使我在指令中将作用域设置为true,数组insuranceSituationAmountList2也将始终更新父作用域。但是对于字段name2,它的工作方式是我想要的。。当作用域为false字段时,name2更新父作用域,而当作用域设置为true时,则不会。

我有一个手动操作,您可以看到它是如何工作的,因此,如果您有时间测试它,首先使用作用域: true和change :false,并在输入框中更改内容。

我想这是一些基本的东西,我不明白,但是有人能为我解释为什么我的数组不能很好地工作。

(如你所知,我的第一种语言不是英语;-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-09 06:42:59

好的..。

首先,您需要理解这个基本原则:

当“获取”范围值时,角将导航到层次结构上,直到它找到它。但是,当“设置”属性时,它只会将其放在当前范围内。(这是基于javascript继承的工作方式,而不是角的错误,所以不要责怪他们。)

所以..。例如,“获取”{ name }将导航到找到一个带有名称的$scope并显示它。但是“设置”{{ name =“已更改”}}将不设置该作用域上的值。它将把它设置在第一个可用范围上。

但是..。“获取”{ object.name }将沿着作用域向上导航,直到它找到一个名为object的对象,然后显示它的名称属性,并且“设置”{ object.name = 'Changed‘}}将首先需要“get”" object“(通过在作用域的层次结构上导航),然后设置它的属性。它将在任何$scope "object“上更新。

现在,如果您理解这一点,它可能有助于解释发生了什么,这就是为什么ng-重复正在更新指令的第二个版本中的正确值。

现在,在第一个指令中,我可以理解为什么当您将范围设置为false时出现了相反的情况。这是因为现在ng-model="name1“与它的父级在同一个作用域上,并且直接更新(没有$scope层次结构),但是也要记住,ng-重复确实创建了一个作用域!因此,由于数组值不包含在对象中,所以只对单个ng重复作用域进行更新。

使用此css查看作用域:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.ng-scope {
    border: 1px red solid;
}

我知道我可能不会很好地解释这一点(尤其是如果英语不是你的第一语言,正如你提到的那样),但希望一个更新的小提琴会有帮助。

突出问题解决问题

它有助于记住,如果您使用ng-模型而没有“.”(点)那么,该值只会在其最近的作用域上更新。

更新:如果您不理解我的尝试,这篇文章可以用图表突出这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25746881

复制
相关文章
为什么我的样式不起作用?
大概看一下代码,是有一个Parent的父组件,蓝底白字。还有一个Child的子组件,红底黑字。 那么实际渲染出的样式是什么样子的呢。如下图:
w候人兮猗
2020/07/01
4.2K0
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.4K0
html的base标签为什么不起作用
我今天尝试编译一个Angular4的应用,并部署到服务器的一个路径上去,由于不是根路径因此我使用了下面的语句: ng build -prod -bh /rel 自然的Angular应用index.html里的语句就变成了: <base href="/rel"> 但,当我用http://localhost:8080/rel打开网页时却提示Loading...,打开调试发现js路径没找到,base标签没有生效,上网自学一番收获如下: https://stackoverflow.com/questions/115
孙亖
2018/06/07
1.9K0
MySQL kill会话不起作用?
在一次日常测试中发现,kill 一个会话后,SQL语句依然在运行并没终止;被kill的会话重新连接并继续执行原来的SQL语句。
老叶茶馆
2023/09/01
2540
MySQL kill会话不起作用?
MySQL kill会话不起作用?
在一次日常测试中发现,kill 一个会话后,SQL语句依然在运行并没终止;被kill的会话重新连接并继续执行原来的SQL语句。
GreatSQL社区
2023/08/10
3980
MySQL kill会话不起作用?
RecyclerView.Adapter notifyDataSetChanged 不起作用
如果应用启动,不在聊天界面,接收到消息后就弹出通知栏消息通知用户,点击进入聊天界面。
张拭心 shixinzhang
2022/05/06
3K0
关于.gitignore不起作用「建议收藏」
由于公司和家里的as版本不同,倒腾了好久,但是代码到本地后build.gradle等文件做了修改,为了不影响公司版本,故家里的需要忽略这些文件的修改,想到的就是加gitignore配置,直接添加不起效果,找到如下办法:
全栈程序员站长
2022/11/01
2K0
textarea 的 placeholder="" 不起作用
textarea 的 placeholder="请输入解决方案(极简化、不超过500字)" 不起作用
一个会写诗的程序员
2018/08/17
2K0
FeignClient 设置 fallback不起作用
StringCloud FeignClient 设置 fallback不起作用 今天在配置feign中是用hystrix的时候,FeignClient 中的 fallback不起任何作用,本来以为是 不支持这个属性了,打开源码一看,还提供这个fallback属性,后来翻阅各中资料,才发现是没有打开feign对hustrix的支持。下面是解决方案: 在application.yml中加入如下配置就可以了 feign: hystrix: enabled: true
码农笔录
2018/06/29
3.5K0
setOnItemClickListener不起作用解决方法
setOnItemClickListener不起作用解决方法 问题 原因 源码解析 解决方法 问题 使用ListView时通常会和Adapter一起使用,在使用setOnItemClickListener方法监听节点时不起作用 原因 原因是因为在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件,此时这些子控件会获取到焦点,所以常常当点击item时变化的是子控件,item本身的点击没有响应,此时就该用到descendantFocusability属性了,下面让我
是阿超
2022/05/05
2K0
setOnItemClickListener不起作用解决方法
Nginx配置缺失导致CSS不起作用
启动nginx,打开网页,发现样式并没有如期加载,看chrome的console,显示如下:
血狼debugeeker
2021/03/02
3.9K0
解决CSS属性position:fixed不起作用
若父元素设置了transform属性,无论transform设置任何属性值,都会导致position:fixed属性失效!
赵彤刚
2022/12/13
3.3K0
解决CSS属性position:fixed不起作用
前端小知识:为什么你写的 height:100% 不起作用?
作者:JiaXinYi https://segmentfault.com/a/1190000012707337 这个知识不算冷门的,但是用的时候可能还是会有些懵逼,不能生效时搜一搜就能找到答案了,但是你真的懂了吗?为什么想要设置一个全屏元素的时候,高度不受%的控制? 1.百分比宽高的设定 按照w3c中的width和height属性,可以明确%设定宽高是根据父元素的宽高来的: http://www.w3school.com.cn/cssref/prdimwidth.asp http://www.w3schoo
企鹅号小编
2018/02/08
1.9K0
前端小知识:为什么你写的 height:100% 不起作用?
hibernate3事务不起作用
如果没有如果,也许永远都发现不了这个问题,除非数据出现问题没有回滚。 由于一同事测试事务问题,发现数据不对,事务没有回滚。项目采用shiro+struts2+spring+hibernate,事务配置采用声明式事务。 用于在struts2的action层 aop注解权限,所用使用了cglib动态代理,如下: <aop:aspectj-autoproxy proxy-target-class="true"/> cglib的动态代理是基于任意类的,而JDK的动态代理是必须要实现接口的。而我们系统中service
小柒2012
2018/04/13
1.5K0
Vue 中使用 JQuery 插件不起作用
有时候在 vue 的代码中使用 jQuery 会不起作用,这是因为 vue 还没有绑定变量,所以我们使用的 jQuery 根本就找不到目标变量,就不会执行,正确的做法是先设置一个时延,稍微等一等 vue 的加载。
wsuo
2020/10/26
2.3K0
【JS】332- 为什么我更喜欢对象而不是 switch 语句
最近(或者不是最近,这完全取决于您什么时候阅读这边文章),我正在跟我的团队伙伴讨论如何去处理这种需要根据不同的值去处理不同的情况的方法,通常对于这种情况下,人们喜欢使用 switch 语句或者使用很多 if 搭配 else if 条件。在本文中我将重点介绍第三种方式 (我更为喜欢的方法),即使用对象进行快速地查找。
pingan8787
2019/08/29
1.3K0
wx.previewImage Iframe不起作用
//imgArray为图片列表,corecturl为当前图片路径 parent.WeixinJSBridge.invoke("imagePreview", { "urls": imgArray, "current": corecturl }) // wx.previewImage({ // current: corecturl, // urls: imgArray // }); 只需要将原来的wx.previewImage替换为parent.WeixinJSBridge.i
2021/11/08
1.7K0
@Transactional不起作用解决方案
@Transactional不起作用 解决方案: 把@Transactional 放在Service层就可以了 放在Controller层里不起作用。。。
周杰伦本人
2023/10/12
1980
为什么我的模型准确率都 90% 了,却不起作用?
二元分类中有一类情况,原始数据集中的两个类出于问题性质的原因,导致其中数据点分布不平衡。举例来说,在处理用户流失(指用户在一段时间之后不再继续使用公司产品的情况)这类市场问题预测时,流失用户所占的百分比一般都会远低于留存用户的。如果说这个例子里分类是八比二的话,那么只会有 20% 的用户终止了与公司继续接触,剩下 80% 的用户则会继续使用公司产品。
深度学习与Python
2022/03/23
2K0
为什么我的模型准确率都 90% 了,却不起作用?
点击加载更多

相似问题

为什么第一个If 'is Not‘语句不起作用?

10

为什么if语句不起作用?

26

为什么if语句不起作用

29

为什么IF语句不起作用?

13

XQuery if语句

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文