如何在视图外评估 Aurelia 插值表达式?

2023-12-20

在 Aurelia 中,假设我有一个包含插值表达式的字符串"Today at ${value | date: 'time'}"和一些代表绑定上下文的对象{ value: new Date() }。 有没有办法在视图之外只获取该字符串和该对象,并获取结果格式化字符串,即"Today at 13:44"?

我看了看tests https://github.com/aurelia/templating-binding/blob/master/test/interpolation-binding.spec.js,但它们都涉及创建 HTML 元素、绑定,然后解除绑定 - 我想知道所有这些的性能开销可能是多少,以及是否有更简单的方法来实现这一点?如果有一种轻量级的方法来仅针对上下文对象评估这样的字符串,而不需要设置和拆除绑定等,那真是太棒了。


这是一个例子:https://gist.run?id=a12470f6e9f7e6a605b3dd002033fdc7 https://gist.run?id=a12470f6e9f7e6a605b3dd002033fdc7

表达式评估器.js

import {inject} from 'aurelia-dependency-injection';
import {ViewResources} from 'aurelia-templating';
import {Parser, createOverrideContext} from 'aurelia-binding';

@inject(Parser, ViewResources)
export class ExpressionEvaluator {
  constructor(parser, resources) {
    this.parser = parser;
    this.lookupFunctions = resources.lookupFunctions;
  }

  evaluate(expressionText, bindingContext) {
    const expression = this.parser.parse(expressionText);
    const scope = {
      bindingContext,
      overrideContext: createOverrideContext(bindingContext)
    };
    return expression.evaluate(scope, this.lookupFunctions);
  }
}

app.js

import {inject} from 'aurelia-dependency-injection';
import {ExpressionEvaluator} from './expression-evaluator';

@inject(ExpressionEvaluator)
export class App {
  message = 'Hello World!';

  constructor(evaluator) {
    this.message = evaluator.evaluate('foo.bar.baz | test', { foo: { bar: { baz: 'it works' } } });
  }
}

Edit

我错过了你需要解析一个事实插值法表达式,不是正则绑定表达式...

aurelia-validation 中有一个这样的例子:https://github.com/aurelia/validation/blob/master/src/implementation/validation-message-parser.ts https://github.com/aurelia/validation/blob/master/src/implementation/validation-message-parser.ts

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

如何在视图外评估 Aurelia 插值表达式? 的相关文章

  • 茉莉花节点没有输出

    我是 JavaScript Node js 和 jasmine 的新手 我正在尝试运行 Node Craftsman Book 一书中的测试 FilesizeWatcher 我创建了 package json 文件并运行 npm insta
  • browserify 错误 /usr/bin/env: 节点: 没有这样的文件或目录

    我通过 apt get install 安装了 node js 和 npm 以及所有依赖项 然后安装了 browserify npm install browserify g 它完成了整个过程 看起来安装正确 但是当我尝试为此做一个简单的捆
  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • React延迟加载/无限滚动解决方案

    我花了一段时间才弄清楚如何使用优秀的延迟加载图像React Lazyload 组件 https github com jasonslyvia react lazyload 演示在滚动时延迟加载图像 但在测试时我无法获得相同的行为 罪魁祸首是
  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • 如何在 JavaScript 中构建一个计算数组中出现次数的对象?

    我想计算数组中某个数字出现的频率 例如 在Python中我可以使用Collections Counter创建一个字典 记录某个项目在列表中出现的频率 据我所知 JavaScript 是这样的 var array 1 4 4 5 5 7 va
  • 使用 easyXDM 调整 IFrame 大小

    我将 iFrame 代码提供给客户 以便他们可以显示我网站上的动态内容 我希望其页面上的 iFrame 能够调整大小以适合我的内容 我按照 easyXDM 网站的说明进行操作 但也许我遗漏了一些东西 我没有收到任何错误 但 iFrame 保
  • 为什么我的 onclick 事件自动触发

    加载页面时最初显示 Hello World 我希望它仅在单击按钮后显示 我知道我可以通过向按钮添加内联事件侦听器来做到这一点 我可以只用脚本编写所有这些代码吗
  • 带有嵌入式 Ruby 的 Javascript:如何安全地将 ruby​​ 值分配给 javascript 变量

    我在页面的 javascript 块中有这一行 res foo 处理这种情况的最佳方法是什么 ruby var里面有单引号吗 否则会破坏 JavaScript 代码 我想我会用红宝石JSON http json org ruby var 上
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • Angular-Datatables + Angular-xeditable:取消可编辑行

    当组合 Angular DataTables 和 Angular XEditable 时 添加新行时会取消可编辑行 这是jsfiddle https jsfiddle net faj61h5d 10 示例操作如下 1 这是初始状态 2 将第
  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • 全局定义的 AngularJS 控制器和封装

    根据 AngularJS 的教程 控制器函数仅位于全局范围内 http docs angularjs org tutorial step 04 http docs angularjs org tutorial step 04 控制器函数本身
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • 获取 2 个日期之间的月份名称

    我有两个约会from and to 我想获取这两个日期之间的所有月份名称 以下是我的代码 var monthNames January February March April May June July August September
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • Chrome Prerender 功能每次都会被取消

    我正在尝试 Chrome 中的预渲染功能 但是当我检查网络时 我可以看到任何链接的请求都被取消 我使用以下语法 我尝试了现场演示http prerender test appspot com http prerender test apps

随机推荐

  • setAttribute 会自动转义 HTML 字符吗?

    我正在调查我们系统中的一个错误 其中链接的标题属性被设置为类似于click if value gt 400但实际显示的工具提示是click if value gt 400 该标题值是由用户输入定义的 因此原始工程师对文本进行了转义 这样就不
  • -rpath-link 的基本原理

    我在用 rpath link with ld当创建一个共享库时 需要来自不在默认位置的其他共享库的一些符号 例如 如果我将其创建为构建过程的一部分 我的问题是 为什么不 L选项允许具有此功能吗 为什么ld需要额外的选项来做到这一点吗 Non
  • 仅使用绝对值对数组进行排序并显示真实值

    打印绝对排序数组 请参阅示例输出以获得说明 Input 9 2 10 3 5 34 22 7 我想要输出 2 3 5 7 9 10 22 34 我被尝试过Arrays sort a 请帮帮我 谢谢 在 Java 8 中 您可以像这样使用 l
  • Android Gradle - 如何包含根项目中的资源?

    我有以下项目结构 MyProject build gradle client private server public app build gradle lint xml proguard project txt project prop
  • JSON.net反序列化对象嵌套数据

    我正在使用 SwiftType Elastic Search C 并遇到反序列化响应的问题 因为 SwiftType 将所有字段都返回为带有 a 的对象raw财产 https swiftype com documentation app s
  • setOnItemClickListener() 不适用于自定义 ListView @ Android

    我已经实现了一个自定义ListView通过扩展LinearLayout对于每一行 每行都有一个小缩略图 一个文本和一个check box The list view部署正确 我可以毫无问题地滚动和快速浏览它 But The ListView
  • Puput(基于 Wagtail 的博客)- 文件在哪里?

    我已将 puput 博客添加到现有的 Django 项目中 我遵循了设置独立博客应用程序的所有步骤 https puput readthedocs io en latest setup html https puput readthedoc
  • 无法连接到 docker 的 docker 镜像中的守护进程 docker

    我正在尝试使用 gitlab 构建 CI 我从 docker 的 docker 镜像开始 我的前端存储库没有任何问题 但现在后端使用相同的 gitlab ci 配置文件 我遇到了这个守护进程错误 这是构建的输出 0KRunning with
  • 图像叠加闪烁?

    事实是所有这些解决方案都有效 只是不适用于该项目 所以我将重新提出问题 略有不同 本质上我有一个图像 当有人将鼠标光标移到它上面时 它会显示一个 div 其中包含一个图像 又名播放按钮 当他们将光标移动到图像之外时 播放按钮就会消失 它有效
  • 是否可以在 Excel VBA 中返回复选框的名称?

    我目前正在处理几个包含数百个复选框的工作表 这些复选框背后的代码工作正常 但我正在寻找一种方法来列出每列复选框的名称 即 例如 我需要知道 G 列中所有复选框的名称 有谁知道这是否可能 预先非常感谢 考虑使用 TopLeftCell 属性
  • 可数对象和不可数对象有什么区别

    我正在尝试找出可数和不可数对象之间的差异 首先我找到了对象的类型 echo gettype data current fiat currency 这是一个Object 但是当我检查它是否是一个可数对象时 var dump data curr
  • 获取 Google 折线图的颜色值?

    可以为 Google 图表设置颜色值 但是是否可以获取图表的预设颜色值 是否有一个数组可以保存这些值并可以访问 在此 Google 网上论坛讨论中 默认颜色数组未记录且无法访问 但是 如果您想要颜色数组 泽维尔 古马拉 https grou
  • VBA:具有多个操作的单行 if 语句

    我真的应该能够用谷歌搜索这个 但我找不到我想知道的东西 我想检查文件是否存在 如果没有 将弹出一个消息框 并且 VBA 应退出子进程 If Dir C file txt vbDirectory Then MsgBox File doesn
  • 为什么 Spark ML ALS 算法打印 RMSE = NaN?

    我使用 ALS 来预测评级 这是我的代码 val als new ALS setMaxIter 5 setRegParam 0 01 setUserCol user id setItemCol business id setRatingCo
  • 无法检索 write() 的 AudioTrack 指针

    我正在尝试实现 AudioTrack 以在 Android 设备中检索来自 IAX 的来电音频 但一段时间后遇到异常 private void writeBuff short buf try if this track null Log w
  • “长轮询”是创建 Web 实时应用程序的最有效方法吗?

    我想创建一个像这样的应用程序 http collabedit com http collabedit com 创建这个实时应用程序的最有效方法是什么 闪光 长轮询 Http 流式传输 或者是其他东西 谢谢 目前 长轮询可能是最好的解决方案
  • Office 365 Sharepoint 将文件上传到文档库

    我正在尝试使用以下代码通过 Web 服务将文件添加到 Sharepoint Office365 上的文档库 public void SaveFileToSharePoint string fileName try var copyServi
  • 如何使用 cli 获取帐户的接近余额?

    是否有可能使用接近帐户余额靠近 cli https docs near org docs tools near cli Running near state
  • 使用 Ansible 在 Windows 上执行 .exe

    我们想要在带有 Ansible 1 8 2 的 Windows Server 2012 上部署应用程序 我已经搜索并找到了a list http docs ansible com list of windows modules htmlWi
  • 如何在视图外评估 Aurelia 插值表达式?

    在 Aurelia 中 假设我有一个包含插值表达式的字符串 Today at value date time 和一些代表绑定上下文的对象 value new Date 有没有办法在视图之外只获取该字符串和该对象 并获取结果格式化字符串 即