AngularJs 指令内的数据绑定

2023-11-22

我很难弄清楚如何确保在创建指令时维护双向数据绑定。这是我正在使用的东西和小提琴:

http://jsfiddle.net/dkrotts/ksb3j/6/

HTML:

<textarea my-maxlength="20" ng-model="bar"></textarea>
<h1>{{bar}}</h1>

指示:

myApp.directive('myMaxlength', ['$compile', function($compile) {
return {
    restrict: 'A',
    scope: {},
    link: function (scope, element, attrs, controller) {
        element = $(element);

        var counterElement = $compile(angular.element('<span>Characters remaining: {{charsRemaining}}</span>'))(scope);

        element.after(counterElement);

        scope.charsRemaining = parseInt(attrs.myMaxlength);

        scope.onEdit = function() {
            var maxLength = parseInt(attrs.myMaxlength),
                currentLength = parseInt(element.val().length);

            if (currentLength >= maxLength) {
                element.val(element.val().substr(0, maxLength));
                scope.charsRemaining = 0;
            } else {
                scope.charsRemaining = maxLength - currentLength;
            }

            scope.$apply(scope.charsRemaining);
        }

        element.keyup(scope.onEdit)
            .keydown(scope.onEdit)
            .focus(scope.onEdit)
            .live('input paste', scope.onEdit);
        element.on('ngChange', scope.onEdit);
    }
}
}]);

当我在文本区域中输入时,模型没有像我需要的那样更新。我究竟做错了什么?


那么,双向数据绑定不起作用有两个原因。 首先,您需要在本地范围属性和父范围属性之间创建双向绑定:

scope: { bar: "=ngModel" }

否则您将创建一个隔离的范围(请参阅http://docs.angularjs.org/guide/directive).

另一个原因是你必须用来自父级的附加指令替换后插入指令(因为你只是在 dom.ready 上引导角度):

element.parent().append(counterElement);

更新jsfiddle:http://jsfiddle.net/andregoncalves/ksb3j/9/

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

AngularJs 指令内的数据绑定 的相关文章

随机推荐

  • JavaScript 有类吗?

    上周我和一个朋友发生了争执 他说 JavaScript 中不存在类这样的东西 我说有你可以说的var object new Object 他说 因为没有文字class用过的 这不是一个班级 谁是对的 编辑 2017 年 7 月 ECMASc
  • 向 TList 和 TStringList 添加稳定排序的简单方法

    我将 TList TObjectList 和 TStringList 带有关联对象 用于多种任务 或者按原样使用 或者作为更复杂结构的基础 虽然排序功能通常足够好 但有时我需要做一个stable排序 两个列表都使用快速排序 为 TList
  • 添加 cache.manifest 后,AngularJS/PouchDB 应用程序停止同步到 CouchDB

    我有一个使用 AngularJS 编写的单页 Web 应用程序 它使用 PouchDB 复制到 CouchDB 服务器并且工作正常 当我尝试通过添加cache manifest 将网页转换为可离线使用时 问题就出现了 突然间 所有复制任务都
  • 对 CouchDB 视图中的日期进行排序

    我有一个嵌套的 JSON 对象作为键status below 2011 01 19 09 41 00 AM Prototyping status application 2011 01 20 09 41 00 AM Playing with
  • 如何按字母数字对数字进行排序

    Input SHC 111U SHB 22x SHA 5555G 所需输出 SHB 22X SHC 111U SHA 5555G 我只需要排序Vehicle no在停车场内没有前缀和后缀字母 出色的 优化良好的开源解决方案 位于http d
  • 在 Visual Studio Code 中以编程方式检测亮/暗主题

    我正在开发 Visual Studio Code扩大可以预览mermaid图表 该扩展使用默认样式表 如果使用浅色主题 该样式表可以正常工作 但是 如果用户已将 Visual Studio Code 切换为使用深色主题 则样式表中的一些规则
  • 使用 JavaScript 访问 iPhone 指南针

    知道是否可以使用 JavaScript 在 Safari 中访问 iPhone 指南针 我懂了如何访问 GPS 但我认不出指南针 On iOS 您可以检索compass像这样的值 window addEventListener device
  • 遍历目录树的方式有哪几种?

    如何用您最喜欢的语言遍历目录树 要在不同操作系统中遍历目录树 您需要了解什么 在不同的文件系统上 您最喜欢的帮助遍历目录树的库 模块是什么 In Python 如果您正在寻找快速 干净且便携的解决方案 请尝试 import os base
  • 将created_at和updated_at字段添加到mongoose模式

    有没有办法添加created at和updated at字段到猫鼬模式 而不必每次都将它们传递给新的MyModel 叫做 The created at字段将是一个日期 并且仅在创建文档时添加 这updated at字段将在任何时候更新为新日
  • 爪哇。比较字符串时忽略重音符号

    问题很简单 JAVA中有没有函数可以比较两个字符串并返回true 忽略重音字符 ie String x Joao String y Jo o 返回相等的 Thanks 我认为你应该使用Collator班级 它允许您设置强度和区域设置 并且它
  • 绝对/相对定位布局溢出

    在相当长的一段时间里 我一直在摆弄一个特定的布局问题 但我显然采用了错误的方式 以下是该方法的基本组成部分 div class stretched div class header SOME HEADER div div class som
  • 身份验证失败:Devise + OmniAuth + Twitter

    我正进入 状态 twitter Authentication failure invalid credentials OAuth Unauthorized 401 Unauthorized成功登录 Twitter 并且页面重定向到登录页面后
  • Hibernate Oracle 表空间注释

    我正在注释我的 DAO 并使用 hibernate3 hbm2ddl 生成 ddls 有没有办法注释表空间 不 没有办法开箱即用 我过去使用以下相当复杂的方法解决了这个问题 创建您自己的注释 TableSpec具有表空间和其他必要的属性 E
  • 复选框的 CSS 边框

    我正在应用 jQuery 复选框的样式 reg checkbox css border thin solid red 边框在 IE 中工作正常 但在 mozilla 中不行 如何使其兼容浏览器 使用大纲 http jsfiddle net
  • Visual Studio 组件缓存已过期

    几乎每次我尝试运行 EF 迁移的 update database 命令时 我都会在 Visual Studio 2015 中收到以下错误 使用 1 个参数调用 GetService 时发生异常 异常 使用 2 个参数调用 Invoke Vi
  • iOS Swift Flood 填充算法

    我为接触点的 桶填充 洪水填充 创建了这个扩展 extension UIImageView func bucketFill startPoint CGPoint newColor UIColor var newRed newGreen ne
  • 如何将模型从一个 Django 应用程序迁移到新的应用程序中?

    我有一个 Django 应用程序 里面有四个模型 我现在意识到这些模型之一应该位于单独的应用程序中 我确实安装了 South 用于迁移 但我不认为这是它可以自动处理的事情 如何将旧应用程序中的模型之一迁移到新应用程序中 另外 请记住 我需要
  • 当没有指定值时,是否应该跳过验证?

    我在 GlassFish 3 上使用 JSF2 我有一个接受可选电话号码的表格 我有这个自定义电话号码验证器 如下 并且我将该字段设置为 required false 因为电话号码在表单中是可选的 问题是 该领域的价值总是得到验证 当没有指
  • ASP.net 对根证书存储的权限

    是否可以授予 asp net 对证书存储的读取权限 如果是 怎么办 如果否 我是否需要为每个证书文件手动设置权限 如果是 这些文件在硬盘上的物理位置在哪里 一般来说 您授予权限A证书 我使用这样的方法来查找定制的证书并授予权限 如果您使用的
  • AngularJs 指令内的数据绑定

    我很难弄清楚如何确保在创建指令时维护双向数据绑定 这是我正在使用的东西和小提琴 http jsfiddle net dkrotts ksb3j 6 HTML