将带标签的模板文字绑定到外部对象

时间:2019-09-23 23:43:14

标签: javascript typescript

我想访问标记模板文字所在的对象上存在的值,而无需引入额外的语法。

function myTemplate(str: TemplateStringsArray) {
  console.log(this.myValue)
  return str[0] 
}

function Create(options) {
  return options
}

const value = Create({
  myValue: 'something',
  template: myTemplate`
    some text
  `
})

我希望console.log(this.myValue)打印位于嵌套对象上的值。

以下方法有效,但我不想像这样绑定模板。

const value = Create({
  myValue: 'something',
  template: myTemplate.bind(this)`
    some text
  `
})

我试图像这样在Create函数中绑定它:

function Create(options) {
  options.template.bind(options)
  return options
}

但是,由于标签已经过评估,因此当然不起作用。

1 个答案:

答案 0 :(得分:1)

知道了。我必须从模板文字返回一个函数,并从创建函数中传递选项

function myTemplate(str: TemplateStringsArray) {
  return function(options: any) {
    console.log(options.myValue)
    return str[0] 
  }
}

function Create(options: any) {
  options.template = options.template(options)
  return options
}

const value = Create({
  myValue: 'something',
  template: myTemplate`
    some text
  `
})