【问题标题】:scalajs prototype propery on js objectjs对象上的scala js原型属性
【发布时间】:2016-09-23 19:18:42
【问题描述】:

我正在尝试转换js:

 //  var XComponent = document.registerElement('x-component', {
    //    prototype: Object.create(HTMLElement.prototype, {
    //      createdCallback: {
    //        value: function() {
    //        var root = this.createShadowRoot();
    //        var template = document.querySelector('#template');
    //        var clone = document.importNode(template.content, true);
    //        root.appendChild(clone);
    //      }
    //      }
    //    })
    //  });

进入scalajs:

import org.scalajs.dom.document


object XComponent {

  implicit class ExtendedDom(x: html.Document) {

    def registerElement( name:String, obj: js.Object ): Unit = js.native

  }

}

class XComponent {

  import XComponent._

  val xComponent = document.registerElement("x-component", js.Object {

    ..

  })  


}

不确定如何处理原型属性..?

【问题讨论】:

  • 哼...没什么特别的。它在这里使用的方式,就像任何对象的任何其他字段一样。所以只需创建一个名为 prototype 的属性。

标签: javascript scala scala.js


【解决方案1】:

这个怎么样……

import org.scalajs.dom.{document, html}

import scala.scalajs.js

object XComponent {

  implicit class ExtendedDom(x: html.Document) {

    def registerElement( name:String, obj: js.Object ): Unit = js.native

  }

}


class XComponent {

  import XComponent._

  val xComponent = document.registerElement("x-component", js.Object {

    val prototype = js.Object.create(
      js.Object{
        val createdCallback = js.Object{
          def value = {
            var root = //this.createShadowRoot();
              ...
          }
        }
      }
    )
  })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多