Я использую JsViews + spectrumjs colorpicker и я должен был создать пользовательский тег, как это:как связать переменную типа базы в JsViews пользовательского тега
$.views.tags({
spectrum : {
template : "<input/>",
onAfterLink : function (tagCtx, linkCtx) {
var tag = this;
var props = tagCtx.props;
var options = {
color : tagCtx.args[0]
};
var linkedElem;
if (tag._.unlinked) {
if (!tag.linkedElem) {
tag.linkedElem = tag._.inline ? tag.contents("*").first() : $(linkCtx.elem);
}
linkedElem = tag.linkedElem;
$.each(props, function (key, prop) {
var option;
if (key.charAt(0) === "_") {
key = key.slice(1);
options[key] = prop;
}
});
this.linkedElem.spectrum(options);
}
},
onUpdate : function() {
return false;
},
onDispose : function() {
this.linkedElem.spectrum("destroy");
}
}
});
Он работает см example, но мне нужно динамически обновлять цвет. В spectrumjs есть событие move.spectrum
и подписаться на него так:
tag.spectrum = tag.linkedElem.spectrum(options);
tag.spectrum.on("move.spectrum", $.proxy(tag.moveEvent, tag));
И добавить обработчики:
moveEvent : function (e, val) {
// update model.color
console.log(val.toRgbString());
this.linkedElem.val(val.toRgbString());
},
onDispose : function() {
this.spectrum.off("move.spectrum", $.proxy(this.moveEvent, this));
this.spectrum.spectrum("destroy");
}
См example. Так что я не пробовал, я не могу отслеживать изменения или применить изменения к model.color
becose цвета базового типа string
Update
Я сделал example без использования пользовательских тегов, как все должно работать.
Спасибо, это помогло, и я хотел посмотреть [здесь] (https://jsfiddle.net/Coddwrench/vf64g54u/). Но я думаю, что ваш ответ будет более полным, если вы добавите к нему больше о внутренних методах в тегах, например 'tag.update' и' tag.refresh', потому что я не нашел ответов [здесь] (https: // www. jsviews.com/#jsvtagcontrols). –
Да, я буду предоставлять некоторые дополнительные темы документации по пользовательским элементам управления тегами в JsViews. Есть еще несколько областей документации, которые все еще находятся в процессе ... – BorisMoore