Мне нужно запускать событие каждый раз, когда свойство обновляется/изменяться, чтобы сохранить элементы dom в синхронизации со значениями свойств модели (Im с использованием простого наследования john resig http://ejohn.org/blog/simple-javascript-inheritance/). Можно ли это сделать в кросс-браузере? Мне кажется, что если бы я мог обернуть любую функцию js, используемую для установки свойств и заставить ее сгенерировать событие, чтобы он мог работать, я просто не знаю, как это сделать.событие изменения свойства javascript
ответ
JavaScript не использует функцию для установки свойств. Они просто переменные, и их установка не требует разработки сложных оберток.
Вы можете использовать функцию для установки свойства, хотя - такие же расположение геттера/сеттера вы могли бы использовать на языке, поддерживаемых личные данные в классах. Таким образом, ваша функция может легко запускать другие функции, которые были зарегистрированы как обратные вызовы. Используя jQuery, вы можете обрабатывать их как события.
$(yourObject).bind('some-event-you-made-up', function() {
// This code will run whenever some-event-you-made-up is triggered on yourObject
});
// ...
$(yourObject).trigger('some-event-you-made-up');
Может быть, вы уже решили проблему с JQuery привязки/запуска, но я хотел бы сказать, что я строю отслеживания изменений и (в верхней части этого) Entity Framework моделирования Javascript, под названием «шатра», который решает проблема вы разоблачены, не требуя какого-либо специального синтаксиса на манипуляции объекта, его с открытым исходным кодом и размещение на:
https://github.com/benjamine/tent
Это документировано JSDoc и подвергнутое испытанию с JS-тест-драйвера.
вы можете использовать модуль отслеживания изменений так:
var myobject = { name: 'john', age: 34 };
// add a change handler that shows changes on alert dialogs
tent.changes.bind(myobject, function(change) {
alert('myobject property '+change.data.propertyName+' changed!');
});
myobject.name = 'charly'; // gets notified on an alert dialog
он работает с массивом тоже меняется (добавляет, удаляет). Далее вы можете использовать контексты «Entity», чтобы сохранить изменения всех обнаруженных изменений (добавленные, удаленные, измененные элементы), сгруппированные по коллекциям, добавление и удаление каскадов, синхронизация обратных свойств, отслеживание 1-к-1, 1-к- N и N-к-M отношение и т.д.
Это очень интересная рамка. –
Вы можете попробовать Javascript Property Events (jpe.js)
я столкнулся с аналогичной проблемой, и в конечном итоге писать функцию перегрузки для Object.defineProperty, которая добавляет обработчик событий к свойствам. Он также обеспечивает проверку типов (js-base-types) и сохраняет свое значение внутри, предотвращая нежелательные изменения.
Образец нормального defineProperty:
Object.defineProperty(document, "property", {
get:function(){return myProperty},
set:function(value){myProperty = value},
})
var myProperty = false;
Образец имущества с OnChange событие:
Object.defineProperty(document, "property", {
default:false,
get:function(){},
set:function(value){},
onchange:function(event){console.info(event)}
})
Я был потрясен, увидев там событие «onchange», но только позже я увидел, что это рама haha –
Объект defineProperty/defineProperties делает трюк. Здесь идет простой код. Я построил некоторые привязки данных рамок на его основе, и он может получить очень сложно, но для осуществления его, как это:
var oScope = {
$privateScope:{},
notify:function(sPropertyPath){
console.log(sPropertyPath,"changed");
}
};
Object.defineProperties(oScope,{
myPropertyA:{
get:function(){
return oScope.$privateScope.myPropertyA
},
set:function(oValue){
oScope.$privateScope.myPropertyA = oValue;
oScope.notify("myPropertyA");
}
}
});
oScope.myPropertyA = "Some Value";
//console will log: myPropertyA changed
- 1. JavaScript изменения CSS свойства
- 2. Поднятие событие изменения свойства для объекта класса
- 3. Как я могу запустить событие изменения свойства сразу после изменения свойства?
- 4. JavaScript onClick метод изменения свойства CSS изображения
- 5. вызов метода javascript для изменения свойства объекта
- 6. JavaScript: есть ли событие изменения геометрии элемента?
- 7. Javascript симулирует событие изменения размера маленького окна
- 8. класс изменения javascript не выполняет событие
- 9. WebElement.clear() запускает событие изменения javascript - Альтернативы?
- 10. Javascript событие, которое выполняется до изменения страницы
- 11. получить элемент, вызванный событие изменения в javascript
- 12. javascript текст входное событие изменения не срабатывает
- 13. Javascript - какое событие использовать для изменения мультиселектора
- 14. Javascript: как получить событие изменения self.location?
- 15. JavaScript/jQuery: выберите событие изменения, не срабатывающее
- 16. Получить событие onchange после изменения значения javascript
- 17. Событие изменения размера перекрестного браузера JavaScript/jQuery
- 18. Как запустить событие изменения размера JavaScript после изменения CSS-макета
- 19. Только событие изменения размера
- 20. Свойство изменения свойства .NET изменилось
- 21. Событие JavaScript не выполняется после изменения вручную поля HTML
- 22. ReactiveUI: Реагировать на изменения свойства
- 23. Функциональный способ изменения свойства объекта
- 24. событие изменения jquery - что случилось?
- 25. изменения отключенного свойства кнопки
- 26. Прослушать изменения свойства зависимостей
- 27. CSS СВОЙСТВА изменения OnClick
- 28. Свойства кнопки изменения - vb.net
- 29. захват изменения значения свойства свойства стиля с помощью JQuery
- 30. Свойства свойства Javascript
Это на самом деле можно иметь «добытчика» и «сеттер» функции для свойств объекта в Модифицированный Javascript. – Pointy
Или в ECMAScript 5. – casablanca
Проблема в том, что объект, который я хочу прослушивать для события, не является объектом jquery, а является универсальным объектом, который хранится в объекте данных объектов jquery. Я не знаю, как связать событие с ним. – joshontheweb