gpt4 book ai didi

javascript - 是否可以为 View 模型创建全局 Attach() 处理程序?

转载 作者:行者123 更新时间:2023-12-03 06:09:18 25 4
gpt4 key购买 nike

我有一个 Aurelia 用例,我希望为附加的每个 View 运行一个处理程序。 (这是一个用于日期和数字输入的 HTML5 填充,可以通过 querySelector 工作。)我意识到我可以在我创建的每个 View 中调用它,但我想知道是否有最佳实践可以设置这是在全局层面上的。 (注意:这可能可以通过路由器管道步骤来完成,但所有 View 可能不受此限制,例如通过 compose 加载的 View 。)

我意识到这可能存在危险,但是是否有最佳实践为 View 和 View 模型添加全局 attached()detached() 处理程序?

编辑:看这里( https://github.com/aurelia/templating/blob/ee5b9d6742fddf3d163aee8face6e6a58ba1554c/src/view.js#L259 ),看起来好像可以为全局处理程序添加一个钩子(Hook),将 View 作为参数,但我宁愿不必更改框架代码,如果有可能。

最佳答案

我的想法是创建一个带有附加逻辑的基本 View 模型类,其中包含全局所需的功能。扩展 View 模型可以根据需要调用 super.attached() 来执行全局逻辑。

您可以在这里找到演示:https://gist.run/?id=fea4069d8a4361c4802c7c5d42105145

这也可以与 compose 一起使用。我知道,这不是一个完全自动化的解决方案,而是一种选择加入的方法,因此需要对所有 View 模型进行一些额外的工作。

基类 - 由所有 View 模型使用

import { inject } from 'aurelia-framework';

@inject(Element)
export class BaseView {

constructor(element) {
this.element = element;
}

attached() {
// global logic goes here
}

}

示例 View 模型 - 实际实现

import { BaseView } from './base-view';
import { inject } from 'aurelia-framework';

@inject(Element)
export class ExtendedView extends BaseView {

constructor(element) {
super(element);
}

attached() {
super.attached(); // global logic runs
}

}

关于javascript - 是否可以为 View 模型创建全局 Attach() 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com