Aurelia 自定义属性中的双向绑定

2024-04-22

UPDATE:看起来这是一个已知的错误:https://github.com/aurelia/templated/issues/253 https://github.com/aurelia/templating/issues/253
我将其留在这里是为了参考/可搜索的目的。

代码:

输入掩码.ts(完整代码可见here https://gist.github.com/Vaccano/e532610df4bff3211eb1)

@customAttribute('input-mask')
@inject(Element)
export class InputMaskCustomAttribute {

    @bindable({ defaultBindingMode: bindingMode.twoWay,
                changeHandler: 'onUnmaskedValueChanged'  })
    unmaskedValue: any;

    onUnmaskedValueChanged(newValue, oldValue) {
        console.log('unmaskedValue updated from inside the custom attribute');
    }

    @bindable
    mask: string;

    attached() {

          this.eventTarget.on('focusout', (e: any) => {
             this.unmaskedValue = (<any>$(this.element)).cleanVal()
             this.fireEvent(e.target, 'input');
          });
    }

  // Code for constructor, fireEvent and to setup the mask...
}

运营商.html

<input input-mask="mask.bind: carrier.airbillMask; unmasked-value.bind: airbill" 
       value.bind="formattedAirbill"/>

UPDATE:要解决此错误,请更改为unmasked-value.two-way并且绑定将会起作用。

载体.ts

@bindable({ defaultBindingMode: bindingMode.twoWay})
carrier: EntityInterfaces.ICarrier;

@bindable({ defaultBindingMode: bindingMode.twoWay })
formattedAirbill: string;

@bindable({ defaultBindingMode: bindingMode.twoWay, changeHandler: 'onAirbillChanged' })
airbill: string;

onAirbillChanged() {
    console.log('Airbill was set!');
}

问题:

数据似乎流入@bindable变量就好了。当掩码发生变化时,自定义属性中的值也会发生变化。

但如果在自定义属性内部进行更改,它似乎不会流出。

示例场景:当我编辑输入框中的值并退出输入后,focusout事件触发,并且控制台语句指示未屏蔽的值已从自定义属性内部打印更新:

unmaskedValue 从自定义属性内部更新

但是(当输入失去焦点时)控制台声明说airbill当我退出输入框时,载体上的 ts 文件已更新不会触发:

这不会触发:
console.log('空运账单已设置!');

这似乎向我表明绑定并不是真正的双向。

问题:

我怎样才能使这种绑定成为双向的?这样当我更新的时候unmaskedValue在自定义属性内它会更新视图模型中的绑定值吗?

注意:作为解决方法,我可以更改unmasked-value.bind是一个方法调用(on-unmasked-value-changed.call="onUnmaskedValueChanged($event))并更新该方法中的值。所以我不需要这个来工作。但我想知道将来是否可以使用。


该已知错误已于 2016 年 3 月 15 日修复并关闭https://github.com/aurelia/templated/issues/253#issuecomment-189394955 https://github.com/aurelia/templating/issues/253#issuecomment-189394955

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

Aurelia 自定义属性中的双向绑定 的相关文章

  • 使用 Google Autocomplete API 根据位置名称获取纬度和经度

    我的页面中有一个文本框 它获取位置名称和带有文本的按钮getLat Long 现在点击我的按钮我必须显示一个警报latitude and longitude文本框中的位置 有什么建议吗 您可以使用谷歌地理编码服务 http code goo
  • 如何通过 JavaScript for 循环创建 json?

    I have array选择标签
  • Javascript Firefox - 如果 @import 存在于样式表中,则无法查询 cssRules - bug 或预期行为?

    如果 import 存在于 css 样式表中 我无法查询 cssRules 是否符合网络标准 或者知道 Firefox 的限制 注意 我正在从同一域导入 css 文件 var style rules document styleSheets
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 从 JavaScript 中 Firebase 数据库的查询结果中获取特定子项的值

    我在 Firebase 上有这个示例数据库 样本数据库 我有一个index html 其中有这两个输入文本 div class login form h2 Login Form h2 div
  • Chart.js 没有显示在我的视图中

    我有一个使用 angular js 运行的应用程序 我的视图之一应该加载图表 我正在使用 Chart js 但由于某种原因它不起作用 并且我的控制台上没有显示错误 这是我创建图表的函数 scope writeBatteryChart fun
  • JavaScript 中的常用数字

    在我的任务中 我必须编写一个程序来查找数组中最常见的数字以及它重复的次数 我写了一些东西 但只打印最大重复次数 所以我的问题是如何打印这个元素的值 最大数量 在我的例子中是 4 var array 13 4 1 1 4 2 3 4 4 1
  • 在 AngularJS 中覆盖运行时的依赖关系

    我有一个服务叫 doggedHttp 它公开了与 http 现在我想创建一个 doggedResource服务是有角度的 resource服务之上 doggedHttp代替 http 换句话说我想注入 doggedHttp as the h
  • 按自定义字母顺序对数组进行排序

    如何对这样的数组进行排序 apple very auto tom tim violet 要按 v a t x b 等排序 不按字母顺序 violet very auto tom tim 在脚本中 我会做这样的事情 myArray sort
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 避免 AngularJS 部分视图在 IE 中缓存

    我正在开发一个 ASP NET MVC 应用程序 它也有一些 angularJS 我有一个主页 其中有不同的选项卡 当您单击它们时 它们会加载角度部分视图 主页是这样的 div class widget div div class widg
  • 在 Chrome 中检索浏览器语言

    我一直在尝试让 momentjs 正确检测浏览器语言并本地化时间显示 按照使用 Moment js 进行区域设置检测 https stackoverflow com questions 25725882 locale detection w
  • 获取键盘事件中的鼠标位置

    我试图在用户按住 Shift 键时出现选择轮 滚轮应以鼠标位置为中心 然而当我测试这个时 pageX and clientX两者在事件对象上都未定义 是否可以通过键盘事件获取鼠标坐标 不 只需跟踪mousemove事件并持续保存当前位置 以
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • Safari 的 Javascript 与 document.write 的问题

    我的问题只发生在 Safari 上 IE FF Chrome 和 Opera 都可以完美运行 我正在向 DOM 添加一个对象 与 YouTube 的方式完全相同 具体取决于 ActiveX 或 NPAPI 因此在确定写入对象类型后 我通过以
  • 如何逐步绘制矢量路径? (拉斐尔.js)

    如何逐步动画化矢量路径 就像它被绘制一样 换句话说 慢慢地逐像素地显示路径 我在用着Rapha l js but如果您的答案不是特定于库的 例如可能有一些通用的编程模式可以完成此类事情 我对矢量动画相当陌生 欢迎 使用直线路径很容易做到 就
  • 使用 Promise 语法编写同步代码有什么好处吗?

    有同步承诺这样的概念吗 使用 Promise 语法编写同步代码有什么好处吗 try foo bar a b bam catch e handleError e 可以写成类似的东西 但使用同步版本then foo then bar bind
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css

随机推荐

  • 在 Python 中生成、填充和绘制六角形晶格

    我想修改我的在方晶格 它是基于代理的生物学模型 上运行的Python脚本 以在六边形宇宙中工作 这就是我在方形模型中创建和初始化二维矩阵的方法 基本上 N 是晶格的大小 R 给出了我需要在算法开始时更改值的矩阵部分的半径 a np zero
  • ws2_32.lib 与 libws2_32.a,有什么区别以及如何将 libws2_32 链接到 NB 项目?

    我使用 NetBeans Windows 和 Cygwin 以及 g 编译器 我正在研究 Windows Sockets 2 我所做的一切都是用 MS 编写的manual http msdn microsoft com en us libr
  • 如何在Google表格中提取多个大写字母的姓名?

    我正在尝试提取数据集的联系人姓名 但是 这些姓名被编译在一个单元格中 而不是按名字 中间名 姓氏 电子邮件等分割 我只需要获取他们的名字 因为我已经有一个仅包含他们的电子邮件的数据集 而不是他们的名字 如何提取多个区分大小写的单词并将其拆分
  • 如何在 jquery.load 过程中添加 jquery load.gif?

    我想用用jQuery load 加载一些内容 如何在加载过程中添加微调器 content load b php abc 假设您的页面上有一个隐藏的微调器 img src spinner gif alt loading style displ
  • Scala 无法推断

    我有一个非常简单的 Spark 代码片段 它在 Scala 2 11 上运行 并在 2 12 后停止编译 import spark implicits val ds Seq val toDF col1 ds foreachPartition
  • VS 2017 RC:我无法更新 Nuget 中的 NETStandard.Library

    从上次 或者可能是最后两次 更新开始 我无法更新 Nuget 中的 NETStandartLibrary 包 我刚刚创建一个新的标准库项目 请参阅此消息 在项目的属性中 版本不同 在 csproj 中
  • 我们如何使用 Angular 按时间戳数据类型对 Firebase Firestore 数据进行排序?

    我有票务发布 Web 应用程序 并且我只会显示那些有效且 24 小时内记录的票证 从现在开始 我在用Firebase 云 Firestore with 角7 getTicketList this ticketData this fireSt
  • UTF-8 可以包含零字节吗?

    UTF 8 字符串可以包含零字节吗 我要通过 ascii 明文协议发送它 我应该使用诸如 base64 之类的东西对其进行编码吗 是的 UTF8 中的零字节是代码点 0 NUL 有no将使用 UTF8 编码的其他 Unicode 代码点 其
  • 在 iPhone 上以编程方式接听来电

    我们如何在 iPhone 上使用 Objective C 以编程方式接听来电 你不能 您甚至没有收到通知或任何有来电的通知 您所能做的就是要求 iPhonemake一个电话 通过tel URI 方案 但您甚至不知道电话是否确实拨打了该号码
  • 如何用 C 生成 HTTP Content-Type 标头?

    所以我正在做一项网络任务 用 C 语言生成一个基本的 HTTP 1 0 Web 服务器 我已经弄清楚了大部分内容 但要求之一是它正确填充标头中的 Content Type 字段 并且我似乎找不到任何方法来自动执行此操作 我已经在使用 fst
  • cmd dir /b/s 加日期

    我正在 Windows XP 中寻找 cmd shell 命令 例如 dir b s 其中包含结果中每个文件的日期和时间值 所有数据 路径 文件名和日期 时间 都需要位于一行上 任何人都可以提供命令来完成此任务吗 谢谢 如果您只想要文件 f
  • 如何在 Greasemonkey 脚本中模拟按键?

    我在网上找到了很多关于如何使用的信息initEvent and dispatchEvent功能 https developer mozilla org en US docs DOM element dispatchEvent 但我一生都无法
  • 从小部件启动活动

    我正在尝试做一些本来应该很容易的事情 但这让我发疯 我试图在按下主屏幕小部件时启动一个活动 例如小部件的配置活动 我想我已经逐字逐句地遵循了 Android 开发者网站上的教程 甚至还有一些非官方教程 但我一定错过了一些重要的东西 因为它不
  • 从浏览器小程序使用 JDBC 时出现“访问被拒绝”

    我有一个 Java 小程序 可以查询 Oracle 数据库中的数据 当从 IDE 内部运行时 它运行得很好 但是 当我将它作为嵌入网页中的小程序运行时 我在类加载器中收到 访问被拒绝 错误 并且我根本不知道它对我的要求是什么 Sep 06
  • JSON IPHONE:如何发送 JSON 请求并从服务器提取数据?

    我对 JSON 几乎一无所知 我需要仅使用 iPhone 向服务器发送请求并读取来自它的数据 我尝试过使用杰森框架 https github com stig json framework这样做 但在阅读文档后 我无法弄清楚如何构造该对象并
  • 滚动到手机上的特定元素不起作用

    我有一个我想要的单击事件 当触发时 窗口滚动到特定坐标 div class col xs 12 responsiveView div class row div div class responsiveOrders div div clas
  • 远端关闭连接无响应

    我正在尝试使用以下代码从网页获取 HTML 源代码 import requests url https dictionary cambridge org us dictionary english arabic hi r requests
  • 提醒用户对应用程序进行评分的警报

    正如您可能在某些应用程序中看到的那样 会弹出一个警报 要求用户在 iTunes 中对应用程序进行评分 通常您可以选择的选项如下 当然 这将打开应用程序的评分页面 第二个选项是 不 谢谢 它会关闭警报 第三个选项通常是稍后 它会稍后显示警报
  • 与 INADDR_ANY 绑定

    如果我将套接字绑定到 INADDR ANY 我知道它将接受服务器上配置的任何 IP 上的传入连接 假设我在进行 bind 调用时配置了 1 个 IP 然后配置了一个新的 IP bind 是否也会接受向新配置的 IP 发起的连接 还是仅适用于
  • Aurelia 自定义属性中的双向绑定

    UPDATE 看起来这是一个已知的错误 https github com aurelia templated issues 253 https github com aurelia templating issues 253我将其留在这里是