Ich versuche, einen benutzerdefinierten Adapter mit niet.js zu arbeiten, aber es ändert weder das Modell noch ruft es die Routine. Wenn es jemanden gibt, die auch rivets.js mit, könnte ich etwas Hilfe mit diesem verwenden:nieten.js versucht, benutzerdefinierte Adapter zu arbeiten
var menuContext = {
menu: {
watchList: {
status: false,
view: function() {
// call other view
}
},
profile: {
status: false,
view: function() {
// call other view
}
}
}
};
rivets.binders['on-select-item'] = {
bind: function(el) {
var adapter = rivets.adapters[rivets.rootInterface];
var model = this.model;
var keypath = this.keypath;
var that = this;
this.callback = function(ev) {
ev.preventDefault();
var value = adapter.get(model, keypath);
var newValue = !value;
adapter.set(model, keypath, newValue);
};
el.addEventListener('click', this.callback);
},
unbind: function(el, value) {
el.removeEventListener('click', this.callback);
},
routine: function(el, value) {
console.log('I am only being called once!');
value ? el.classList.add('enabled') : el.classList.remove('enabled');
}
};
var menu = document.querySelector("#menu");
rivets.bind(menu, menuContext);
#menu .enabled {
background-color: green;
}
<script src="https://rawgit.com/mikeric/rivets/master/dist/rivets.bundled.min.js"></script>
<ul id="menu">
<li>
<a href="#" role="button" rv-on-select-item="menu.watchList.status">
Item 1, value should toggle (true|false) <span rv-html="menu.watchList.status"></span>
\t \t \t \t </a>
</li>
<li>
<a href="#" role="button" rv-on-select-item="menu.profile.status">
\t \t \t \t Item 2, value value should toggle (true|false) <span rv-html="menu.profile.status"></span>
\t \t \t \t </a>
</li>
</ul>