为什么双向绑定有时在 Angular 中不使用点也能工作?

2024-04-15

考虑这个小提琴:Fiddle 1 http://jsfiddle.net/martijngr/Qvu5u/1/当您选择日期时,您会注意到上面的文本没有更新。这是因为我必须使用列表中的一个对象,如下所示:Fiddle 2 http://jsfiddle.net/Qvu5u/3/(简化)。

但是,另一方面,这确实有效,没有点:Fiddle 3 http://jsfiddle.net/martijngr/DnKs5//

有人能解释一下小提琴 1 和小提琴 3 之间有什么区别吗?我读过有关原型继承的内容(理解范围 https://github.com/angular/angular.js/wiki/Understanding-Scopes),但我不理解这种行为。

小提琴3:

HTML:

<div ng-controller="MyCtrl">
  Hello, {{name}}!


  <button ng-click="visible = !visible">Toggle</button>

  <div ng-show="visible">
    Some content 
    <sample visible="visible"></sample>
  </div>
</div>

JavaScript:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.name = 'Superhero';
    $scope.visible = true;
}

myApp.directive("sample", function(){
    return {
        restrict: 'E',
        template: '<span ng-click="hide()" style="cursor: pointer;">X</span>',
        scope:{
            visible: '='
        },
        link: function(scope, element, attributes){
            scope.hide = function(){
                console.log(scope.visible);
                scope.visible = false;
            }
        }
    }
});

如果您的指令创建了一个独立作用域(并且没有中间作用域),并且它使用=对于双向数据绑定,您不需要使用对象属性 - 即,您不需要“点”来使其工作。

在 Fiddle 1 和 2 中,ng-repeat 创建一个中间(子)作用域,该作用域原型继承自 MyCtrl 作用域。在这种情况下,您需要使用对象属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么双向绑定有时在 Angular 中不使用点也能工作? 的相关文章

随机推荐

  • 容器 div 标签的 100% 高度和宽度不起作用

    我的网页布局如下 以下 CSS 代码在 Internet Explorer 9 中为我提供了 100 的高度和宽度 虽然同样在 FF 和 Chrome 中为我提供了 100 的宽度 但不是 100 的高度 我尝试了几个例子 其中大多数都有相
  • 在 Android 浏览器中获取当前 URL

    我正在寻找一种方法来获取用户在 Android 浏览器应用程序上访问的当前 URL 我发现我可以从以下位置获取上次访问的 URLBrowser BOOKMARKS URI使用以下技术的数据库 Cursor cursor context ge
  • MySQL解释过滤列跳转4100带索引

    我的查询 EXPLAIN EXTENDED SELECT artwork id artwork added FROM artwork ORDER BY artwork added DESC LIMIT 0 6 当我在 添加 上添加索引以避免
  • 通过截断有效地将 OracleDecimal 转换为 .NET 十进制

    当我尝试使用 C 将以下 Oracle 空间对象转换为坐标集 小数 时 出现算术溢出异常 decimal OracleUdt GetValue MDSYS SDO GEOMETRY 2001 1041001 MDSYS SDO POINT
  • 如果搜索文本中的术语被换行符打破,如何使用 RegEx 查找术语

    假设我正在搜索 申请人 正如我之前发生过的事情一样 我收到一个如下的文本文件 We have considered the applica nt s experience and qualification and wish to gran
  • 模拟 Rails.env.development?使用 rspec

    我正在使用 rspec 编写单元测试 我想模拟 Rails env development 返回 true 我怎样才能做到这一点 我试过这个 Rails env stub development nil and return true 它抛
  • URI 中的路径可以包含 unicode 吗?

    有效的 URL 是否可以包含非转义的 Unicode 字符 是的 URI 中允许未转义的 ASCII 以及 Unicode 子集 例如字母和数字 但大多数 Unicode 字符集都必须进行百分比编码
  • MOXy 在 2.6.0 版本中支持非字符串 @XmlID 吗?

    根据https gist github com VineetReynolds 5108580 https gist github com VineetReynolds 5108580 JAXB 规范要求元素注释为 XmlID成为一个Stri
  • 如何启动 Perl 的交互式控制台?

    如何启动 Perl 的交互式控制台 类似于irbRuby 命令或python对于Python 您可以在一个简单的程序上使用 perl 调试器 如下所示 perl de1 该命令将启动 Perl 调试器 d 表达式1 e1 因为调试器想要调试
  • 消除java中的“\u3000”错误

    当我尝试编译java文件时 编译器说 非法字符 u3000 经过搜索 我发现是中日韩统一表意文字 https en wikipedia org wiki CJK Unified Ideographs中韩日的SPACE 我决定编写一个简单的搜
  • 如何使用 PhoneGap/Cordova 创建适用于 Windows Phone 7 的简单全景应用程序?

    我环顾四周 发现了几个适用于 Windows Phone 7 的基于 PhoneGap Cordova 的 HTML5 应用程序的示例 但它们似乎都没有向您展示如何制作全景或枢轴样式应用程序 而这些是该应用程序的一些主要吸引力 操作系统的用
  • 将私钥作为字符串的 Java SFTP 客户端

    Apache Commons 和 JSch 都需要私钥文件来建立 SFTP 连接 我正在从事的项目将用于连接到多个 SFTP 服务器 因此 我们不希望部署多个私钥文件 而是将这些密钥作为字符串保存在加密的配置文件中 是否有不需要私钥文件对象
  • 是否可以通过robots.txt控制抓取速度?

    我们可以在 robots txt 中告诉机器人抓取或不抓取我们的网站 另一方面 我们可以控制Google Webmasters中的抓取速度 Google bot抓取网站的速度 我想知道是否可以通过robots txt限制爬虫活动 我的意思是
  • IntelliJ 找不到类路径测试资源

    我遇到一个问题 IntelliJ 13 1 4 在运行单元测试时找不到ServiceLoader文件在src test resources我的模块的目录 在回答之前请注意我已完成以下所有操作 该模块是一个 Gradle 项目 如果我运行gr
  • iOS5 的 NSURLConnection 超时情况如何?

    我试图找到一个明确的答案 是否可以设置在 iOS 5 中使用 NSURLConnection 的超时值 我想将其设置为 30 秒 我搜索了过去关于此的帖子 但信息似乎相互矛盾 例如这个帖子 NSURLConnection 超时 https
  • 在 lucene 中搜索 UUID 不起作用

    我有一个 UUID 字段 以以下格式添加到我的文档中 372d325c e01b 432f 98bd bc4c949f15b8 但是 当我尝试通过 UUID 查询文档时 无论我如何尝试转义表达式 它都不会返回它们 例如 uuid 372d3
  • 何时使用 Soapobject 和 SoapPrimitive

    我一直在与ksoap2 lately 我仍然很困惑两者之间的确切区别是什么SoapObject and SoapPrimitive 以及何时使用它们 我猜它与字符串和数组有关 这是真的吗 我找到了一些链接 但感到困惑 谁能用最简单的英语形式
  • 在代理后面工作的 Azure 服务总线

    我通过 SDK 使用 Azure 服务总线 一切正常 但我遇到了我认为与代理相关的问题 当 IE 运行时 一切正常 但如果不运行 消息将无法发送 我正在代码中设置代理 但想知道我是否为服务总线 SDK 正确执行了此操作 WebProxy p
  • cpython 和 python 有什么区别[重复]

    这个问题在这里已经有答案了 我想知道 CPython 和 Python 之间的区别 因为我听说 Python 是用 C 开发的 那么 CPython 有什么用 Python 是一种语言 CPython http en wikipedia o
  • 为什么双向绑定有时在 Angular 中不使用点也能工作?

    考虑这个小提琴 Fiddle 1 http jsfiddle net martijngr Qvu5u 1 当您选择日期时 您会注意到上面的文本没有更新 这是因为我必须使用列表中的一个对象 如下所示 Fiddle 2 http jsfiddl