我正在使用X-editable来创建可以通过ajax调用进行编辑的链接。
我的页面上可编辑的所有内容都是使用可编辑类创建的,并使用data- *参数将值传递给x-editable。总的来说,这是有效的,因为更新提交正常。
但是,在下面的示例中,数据成功函数从不调用 - 在这种情况下我从未看到控制台日志。
<a href="#"
class="editable"
data-type="select"
data-send="always"
data-source='{"Windows 2000":"Windows 2000","Windows Server 2003":"Windows Server 2003","Windows Server 2008":"Windows Server 2008","Windows Server 2008 R2":"Windows Server 2008 R2","Windows Server 2012":"Windows Server 2012","Windows Server 2012 R2":"Windows Server 2012 R2","Other":"Other"}' data-name="Value"
data-pk="1155"
data-display="function (value, response) { return false;}"
data-success="function (response, newValue) { console.log('success');}"
data-url="/attribute/updateField"
data-title="Title info">Windows Server 2008</a>
答案 0 :(得分:0)
我曾向程序员询问X-editable,因为我正在尝试同样的事情而且他回答说不可能这样做。他的回答是:
我认为这是不可能的,因为数据属性被解析但没有被评估为javascript。
另外我认为更好的方法是将js逻辑存储在js文件中,而不是存储在html属性中。
答案 1 :(得分:0)
我发现最干净的解决方案是:
HTML:
<a href="#"
class="editable"
data-type="select"
data-send="always"
data-source='{"Windows 2000":"Windows 2000","Windows Server 2003":"Windows Server 2003","Windows Server 2008":"Windows Server 2008","Windows Server 2008 R2":"Windows Server 2008 R2","Windows Server 2012":"Windows Server 2012","Windows Server 2012 R2":"Windows Server 2012 R2","Other":"Other"}' data-name="Value"
data-pk="1155"
data-eval-display="console.log('display', response, newValue);"
data-eval-success="console.log('success', response, newValue);"
data-url="/attribute/updateField"
data-title="Title info">Windows Server 2008</a>
JavaScript:
$('.editable').editable({
display: function(response, newValue) {
eval($(this).data('eval-display'));
},
success: function(response, newValue) {
eval($(this).data('eval-success'));
}
});