javascript 使用vanilla JS观察对象属性更改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用vanilla JS观察对象属性更改相关的知识,希望对你有一定的参考价值。

var onChange = function(object, onChange) {
  var handler = {
    get(target, property, receiver) {
      try {
        return new Proxy(target[property], handler);
      } catch (err) {
        return Reflect.get(target, property, receiver);
      }
    },
    defineProperty(target, property, descriptor) {
      onChange();
      return Reflect.defineProperty(target, property, descriptor);
    },
    deleteProperty(target, property) {
      onChange();
      return Reflect.deleteProperty(target, property);
    }
  };
  return new Proxy(object, handler);
};

var trackingIndexBookingList = {
  filtered: []
};

// watcher
var watchedBookingList = onChange(trackingIndexBookingList, function() {
  console.log('Object changed, triggea el cambio en las vistas: ', trackingIndexBookingList.filtered.length)
});

// LUEGO YA PODEMOS LLAMARLO EN NUESTRO EVENTO, POR EJEMPLO CUANDO FILTREMOS UNA DATATABLE
// (esto revisarlo que seguro que se puede simplificar)
dataTableTrackings.on('draw.dt', function(){
  trackingIndexBookingList.filtered = []; //vaciamos el array
  dataTableTrackings.rows( { filter : 'applied'} ).data().each(function(item, i){
      trackingIndexBookingList.filtered.push(item.IdentificadorClick);
  });
  //triggea el watch
  watchedBookingList.filtered = trackingIndexBookingList.filtered;
});




以上是关于javascript 使用vanilla JS观察对象属性更改的主要内容,如果未能解决你的问题,请参考以下文章

javascript 使用vanilla JS从URL查询字符串中获取值

如何在 Vanilla JavaScript (JS) 中导入/导出类

javascript AJAX与Vanilla JS

javascript JQuery到Vanilla js指南

javascript 查找匹配对象Id - vanilla js

javascript Vanilla JS in a Nutshell