小编Bla*_*ade的帖子

Vue.js访问具有不确定名称的变量

我想知道是否可以从vue的数据集中访问变量,但是只能通过另一个变量指定变量名。这就是我的意思:

我的一些变量/属性:

var siteAdminVue = new Vue({
  el: "#siteAdmin",
  data: {
    tagtitle: "",
    tagparent: "",
    tagdesc: "",
    badgestitle: "",                    
    badgesdesc: "",               
    badgesprivilege: 0,                  
    newstitle: "",                    
    newsnotify: false,                  
    newscontent: "", 
}             
Run Code Online (Sandbox Code Playgroud)

现在,我想在vue中的一种方法中设置其中一些属性:

  var self = this;
  var type = currentSection.toString().substr(4);
  var selectElement = document.getElementById(currentSection + "select");

  // name of vue property, for example newstitle
  var titleElement = type + "title";    

  self.[titleElement]= selectElement.value;
Run Code Online (Sandbox Code Playgroud)

我不想使用switch语句来检查是否需要设置新闻标题,徽章标题等,因此我想我可以将名称存储在已经在vue中定义的变量中,然后进行设置。有没有办法做到这一点?

提前致谢

javascript variables vue.js

4
推荐指数
1
解决办法
1229
查看次数

将函数签名分配给 TypeScript 中的类型

假设我有一个函数:

function registerEvent(event: Event, handler: HandlerSignature);
Run Code Online (Sandbox Code Playgroud)

这些是各自的类型:

enum Event {
  EventOne,
  EventTwo
}

type HandlerSignature = (...args: any[]) => void;
Run Code Online (Sandbox Code Playgroud)

现在每个事件都可以有不同的函数签名,例如:

function handler1(foo: number, bar: string);
function handler2(foo: string);
Run Code Online (Sandbox Code Playgroud)

我想要实现的是,我可以调用该registerEvent函数,指定第一个参数(事件),并让 TypeScript 检测哪个签名与该事件相对应,即用于智能感知并防止用户为事件分配错误的签名。

我考虑过创建一个映射,在其中将不同的签名分配给枚举值,但我不能真正将其用作类型,可以吗?即使我使用映射类型,我也必须创建一个变量来分配所有事件。

typescript mapped-types

4
推荐指数
1
解决办法
4814
查看次数

Nest.js 只接受在 DTO 中指定的字段

我目前正在使用 Nest.js 并有一个简单的应用程序,其中包含注册帐户的路径。我创建了一个包含几个字段和一个 mongodb 模式的 DTO。在 mongodb 模式中只有一个字段我不想让用户在创建时修改(=特权),所以我没有在 DTO 中指定它。

但是,如果用户使用正文中的权限属性发出请求,它仍将保存到 DTO,然后保存在架构中。

有没有办法“切断”身体中与 DTO 不匹配的任何数据?我敢肯定它曾经告诉我有一个它无法识别的领域,但它似乎不再起作用了。我试图找到一个类验证器或其他东西,但找不到任何合适的东西,我真的不想自己检查每个属性......

提前致谢!


来自 account.service.ts

  async register(body: RegisterAccountDto) {
    return new_account.save();
  }
Run Code Online (Sandbox Code Playgroud)

来自 account.controller.ts

  @ApiOperation({ summary: 'Register user', description: 'Register a new account' })
  @ApiConsumes('x-www-form-urlencoded')
  @ApiBody({ type: [RegisterAccountDto] })
  @Post('register')
  async register(@Body() body: RegisterAccountDto) {
    return this.accountService.register(body);
  }
Run Code Online (Sandbox Code Playgroud)

来自 account.schema.ts

  @Prop({ default: Privilege.USER })
  privilege: Privilege;
Run Code Online (Sandbox Code Playgroud)

dto typescript class-validator nestjs

1
推荐指数
1
解决办法
1954
查看次数