data- *属性中的X可编辑编码成功回调

时间:2015-09-08 17:54:32

标签: javascript x-editable

我正在使用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>

2 个答案:

答案 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'));
    }
});