到 ref 属性的绑定何时在 Aurelia 中生效?

2024-04-10

这是这个问题的后续:访问 Aurelia 中的 DOM 元素 https://stackoverflow.com/questions/29863044/access-a-dom-element-in-aurelia

屏幕激活生命周期中是否有一个钩子允许我运行代码after ref绑定已设置?目前看来还有一段时间activateref绑定尚未设置,然后在某个时刻它们会被激活。我通过添加一个来测试这个<div ref="myDiv"></div>到接近底部的welcome.html在最新(v0.13.0)骨架导航存储库的克隆版本中,并测试视图模型中引用的存在,如下所示:

export class Welcome{
  heading = 'Welcome to the Aurelia Navigation App!';
  firstName = 'John';
  lastName = 'Doe';

  testMyDiv() {
    console.log("Getting my div")
    console.log(this.myDiv)
  }

  get fullName(){
    this.testMyDiv()
    return `${this.firstName} ${this.lastName}`;
  }

  welcome(){
    alert(`Welcome, ${this.fullName}!`);
  }
}

模板底部的片段...

      <button type="submit" class="btn btn-default">Submit</button>
    </form>
    <div ref="myDiv"></div>
  </section>
</template>

这是我在控制台中看到的快照......

welcome.js:10 Getting my div
welcome.js:11 undefined
welcome.js:10 Getting my div
welcome.js:11 undefined
welcome.js:10 Getting my div
welcome.js:11 <div ref=​"myDiv" class=​"au-target">​</div>​
welcome.js:10 Getting my div
welcome.js:11 <div ref=​"myDiv" class=​"au-target">​</div>​
(continues)

像这样的打印输出会无限期地持续下去。你可以看到fullName()如果名称更改,则定期调用以更新屏幕(我认为这是脏检查)...但是您可以看到,在开始时有一个时期,当引用div作为视图模型的属性无效,然后它是有效的。有人可以解释一下吗?有没有办法在之后挂接到视图模型ref变得有效?


一般来说,绑定在以下时间后被处理并可用bind打回来。但是,在这种情况下,由于您需要访问 DOM 元素,因此需要绑定 ViewModeland附加到视图,因此使用attached打回来。

class ViewModel { 

    bind() {
        this.refItem == undefined; // true
    }

    attached() {
        this.refItem == undefined; // false
    }
}

正如您在评论中指出的,有关激活器回调的更多信息可在此处找到:http://aurelia.io/docs.html#extending-html http://aurelia.io/docs.html#extending-html

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

到 ref 属性的绑定何时在 Aurelia 中生效? 的相关文章

  • 如何在 Aurelia 入门应用程序(导航应用程序)中使用 JQuery UI 组件

    我可以按照入门教程中提供的步骤运行 Aurelia 应用程序 他们在骨架应用程序中使用了引导导航栏 是否可以在 Aurelia 应用程序中使用 JQuery UI 组件 如果是 请解释一下如何实现这一目标 提前致谢 是的 这是可能的 我做了
  • 使用 setAttribute 方法() 的 Aurelia 自定义属性

    当我在 javascript 中创建和附加元素并设置自定义属性时 Aurelia 似乎并不知道 除非我做错了什么 例如 const e document createElement div e setAttribute custom att
  • Aurelia CLI & TypeScript & MomentJS

    我没有让 Aurelia CLI 和 TypeScript 和 MomentJS 一起工作 我已经看到了 Aurelia 和 Moment 问题的解决方案 但他们不使用 Aurelia CLI 这就是我现在正在做的事情 使用 Aurelia
  • 使用 Aurelia 将数据和文件发布到 ASP.NET webapi

    我正在尝试将文件上传的输入添加到我的应用程序中 这是我的视图 有两个输入 一个文本和一个文件
  • 如何使用 vs2017rc 创建 aurelia typescript 项目

    我是 aurelia 的新手 我需要创建一个框架的原型项目 一开始 我打算使用 sculpture typescript aspnetcore 框架 但是当我尝试 vs2017rc 时 我发现它使用 csproj 作为默认格式 而 vs20
  • Aurelia 动态绑定

    我创建了一个生成表格数据的自定义元素 出于充分的理由 这会生成实际的 HTML 并插入到 DOM 中 而无需使用模板 我需要将点击观察器附加到特定元素 以便我可以在自定义元素中运行函数来响应点击 如果使用模板 我会使用 click dele
  • 如何使用 Aurelia/Typescript 导入 Moment-Timezone

    我已经正确导入了 momentjs 它工作正常 但是当我尝试导入时刻时区时 我无法让它工作 我无权访问任何功能 这是我的 aurelia json 文件 我从 npm 加载它们 name moment path node modules m
  • 在 Aurelia 中,槽可以用于重复绑定吗?

    我想创建一个循环遍历数组并将其应用于数组中的每个项目的自定义元素 例如 自定义元素的视图模板将包含类似以下内容的内容 div div div div
  • Aurelia Repeat.for 在模型更改时不会刷新

    我想使用 Aurelia 构建一个简单的自定义组件 允许用户输入一个或多个字符串 当有多个项目时 应显示列表remove列表中每个项目的按钮 我的问题是列表的第一项没有显示remove当列表中有多个项目时按钮 这就是它的样子 https i
  • aurelia-fetch-client 动态创建请求标头

    我正在使用 aurelia fetch client 将一些数据发送到 web api 在注册方法中 headers Headers register this headers new Headers this headers append
  • 我应该排除 .gitignore 中的 Aurelia 脚本文件夹吗?

    我是否应该将 Aurelia 项目的 scripts 文件夹放入 gitignore 中 因为据我所知 它们无论如何都会在每次运行时重建 我的 gitignore 当前包含 node modules jspm packages idea D
  • Aurelia 中的数据绑定父子关系

    代码 我有两节课 export class Shipment shipmentId number widget Widget export class Widget widgetId number name string 然后我有一个Shi
  • Aurelia 委托与触发器:您如何知道何时使用委托或触发器?

    我正在尝试学习如何使用 Aurelia 框架 这样做时 我正在阅读文档here https github com aurelia documentation blob master old English docs md event mod
  • 尝试加载瞬态 Web Worker 时出现“Reflect.defineMetadata”错误

    我正在尝试从 Web Worker 内部加载 aurelia 框架 以便将 Worker 装饰为瞬态 这是工人装载机 importScripts jspm packages system js System config defaultJS
  • Aurelia CLI 包括 Bootstrap Glyphicons

    我正在尝试将 Bootstrap 包含在我的 Aurelia CLI 项目中 并且 CSS 和 JS 工作正常 我遇到的唯一问题是字形需要加载字体文件 我使用这个配置 dependencies name bootstrap path nod
  • gulp 命令给出找不到模块的错误

    我正在尝试在 Windows 上设置基本的 aurelia 应用程序 我已遵循以下指示 http aurelia io get started html http aurelia io get started html 包括 安装节点js
  • Aurelia 自定义属性中的双向绑定

    UPDATE 看起来这是一个已知的错误 https github com aurelia templated issues 253 https github com aurelia templating issues 253我将其留在这里是
  • Aurelia - 仅 HTML 自定义元素的内联定义

    我的 Aurelia 视图模型中有一个递归对象 如下所示 Class BottomlessPit Name string MorePits BottomlessPit null 因此 我想在 Aurelia 视图中使用递归模板 它只会在一个
  • Aurelia 以 PHP 传递的参数开头

    我需要在开始时将参数传递给 Aurelia 根据传递的值 应用程序将具有不同的状态 该应用程序被注入到使用 PHP 构建的页面上 因此最好的方法是使用 PHP 代码指定的参数启动它 有什么办法可以做到这一点吗 您可以在普通 JS 中访问的任
  • 强制执行 show.bind

    我有一个包含数据的表 当从另一个视图触发事件时 我希望视图检查 show bind 语句 问题是该事件没有更改当前视图中的任何数据 foo html tr p canBeRemoved p tr 我正在使用 EventAggregator

随机推荐