我编写了一个自定义绑定处理程序,可以切换元素是否为contentEditable.我还希望在编辑元素的内容时更新任何html绑定,因此它会侦听输入事件并更新html绑定(如果可用).
ko.bindingHandlers.contentEditable = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.unwrap(valueAccessor());
element.contentEditable = value;
var $element = $(element);
if (value) {
var allBindings = allBindingsAccessor();
var htmlBinding = allBindings.html;
if (ko.isWriteableObservable(htmlBinding)) {
$element.on("input", function (event) {
htmlBinding(element.innerHTML);
});
}
} else {
$element.off("input");
}
}
};
Run Code Online (Sandbox Code Playgroud)
但是,问题出在这里:
一个jsfiddle说千言万语...... http://jsfiddle.net/93eEr/1/
关于如何处理这件事,我有点难过.
我有一个视图,我试图根据http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual覆盖单个字段的表单主题- 田.
视图看起来像这样:
{% form_theme form _self %}
{% block _my_form_foo_widget %}
<div class="input-append">
{{ block('number_widget') }}
<span class="add-on">%</span>
</div>
{% endblock %}
<form>
{{ form_row(form.foo) }}
{{ form_row(form.bar) }}
</form>
Run Code Online (Sandbox Code Playgroud)
对于foo和bar行,一切看起来都是预期的,但是_my_form_foo_widget块本身也包含在输出中,即:
<div class="input-append">
<span class="add-on">%</span>
</div>
<form>
<div>
<label for="my_form_foo">Bar</label>
<div class="input-append">
<input type="text" id="my_form_foo" name="my_form[foo]">
<span class="add-on">%</span>
</div>
</div>
<div>
<label for="my_form_bar">Foo</label>
<input type="text" id="my_form_bar" name="my_form[bar]">
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活弄清楚我做错了什么.作为一种解决方法,我只是在HTML注释中包含了块.
我在Symfony 2.4.1和Twig 1.15.0上.