小编ezr*_*zra的帖子

有没有办法强制 javascript 元素根据它最初的定义方式重新定义自己?

我在玩对象和构造函数之类的东西,我想知道是否有一种方法可以根据最初定义的值将值绑定到变量。我有以下代码:

打字稿

let cr = "create",
  ap = "apply",
  $this = {
    set: (prop, value) => {
      this[prop] = value;
    }
  };
function creator() {
  this.$ = (array: Object[]) => {
    array.forEach((kp: Object) => {
      let key = Object.keys(kp)[0];
      let val = kp[Object.keys(kp)];
      $this[key] = val;
      creator.create(key, { value: val });
    });
  };
  this.apply = (...objects: Object[]) => {
    objects.forEach((obj: Object) => {
      creator.call(obj);
    });
  };
}
function create(obj) {
  function createValues(arr) {
    let instance: Object = new obj();
    let …
Run Code Online (Sandbox Code Playgroud)

javascript data-binding typescript

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

这个代理总是在代理上抛出 'set' 是否有原因:trap 为属性 'main' 返回 falsish 但在其他情况下仍然可以完美运行?

我正在使用 javascript 进行一个项目,我正在尝试制作类似 的项目AngularJS,但有点不同,只是为了好玩,因为我认为数据绑定是一个非常酷的想法,并且在正确实施时非常有用。我Proxy定义了一个对象来检测何时发生更改,以及一些处理 HTML 和数据绑定的函数。它正在工作,并将替换如下内容(main = 'hello'):

<div>
  %{ main }%
</div>
Run Code Online (Sandbox Code Playgroud)

有了这个:

<div class = 'binding-0'>
  hello
</div>
Run Code Online (Sandbox Code Playgroud)

如果“main”更改为其他内容,div元素也会更改其值。但是,每当我使用set为全局对象定义的方法来处理在 html 中找到的所有变量时,我都会收到此错误:

Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'main'
    at app.js:112
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?它仍然会做它应该做的事情,但总是抛出这个错误。
这是代码:

<div>
  %{ main }%
</div>
Run Code Online (Sandbox Code Playgroud)
<div class = 'binding-0'>
  hello
</div>
Run Code Online (Sandbox Code Playgroud)

我现在不知道如何在不抛出错误的情况下使其正常工作。我try {} catch (TypeError) {}在不同的地方尝试过,但没有运气。

html javascript data-binding ecmascript-6

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