如何从类型为'select'? (x-可编辑)(laravel 5.2)


How to fetch text of the value from data-source in type:'select' ? (x-editable) (laravel 5.2)

我在laravel 5.2中使用x-edit。我想从数据源中存储相应值的文本。我只能将值存储在数据库中。

我的观点:

<label>Course:</label><a  href="#" id="course" data-name="course" data-type="select" data-value="" data-pk="{{Auth::user()->id}}" data-source="{1: 'B.tech', 2: 'M.tech'}" data-title="course" data-url="{{route('course')}}"></a>

控制器:

    public function course(Request $request)
{
    $account = new Account();
    $name = $request->get('name');
    $value = $request->get('value');
   $request->user()->accounts()->update([$name => $value]);


    return redirect()->back();
}

X-Editable在默认情况下创建select,源对象键作为选项值,源值作为选项显示文本。自然,当发送请求时,发送值(在您的示例中为1或2)而不是文本。

但如果源是数组,则值将与文本相同。所以你可以直接输入

<a ... data-type="select" data-source="['B.tech', 'M.tech']"></a>

如果你不能或不想改变原始的数据源,你可以在初始化组件的时候,而不是将源设置为属性:

$('#YOUR_ELEMENT').editable({
    // ...
    source: function () {
        var items = {1: 'B.tech', 2: 'M.tech'};
        return Object.keys(items).map(function(x) {return items[x];});
    },
    // ...
});

我也有同样的问题。重点是,我想分开的值和显示的文本,但我仍然需要得到这个"显示文本"的一些显示需要后,选择已被选中。(假设我想创建一个模态窗口来确认所选文本,而不是值)。我们怎么把这条短信拿回来?之前的答案告诉我们:不要将文本和值分开。我确实需要把它们分开。

这是我可以设法建立的解决方案,感谢K scanrett在其他地方的回答。我正在寻找"onSave"事件的值进行优化。

$('.MyTable').on('save', function(e, params) {
    source = $(this).data('editable').input.sourceData
    var selected = $.fn.editableutils.itemsByValue(params.newValue, source); 
    if (selected.length) {
           console.log(selected[0].value);
           console.log(selected[0].text);
    }
});

它甚至可以直接在"success"选项中设置:

$('.MyTable').editable({
   ...
   success: function(responsetxt, newValue) {           
    source = $(this).data('editable').input.sourceData;
    var selected = $.fn.editableutils.itemsByValue(newValue, source); 
    if (selected.length) {
       console.log(selected[0].value);
       console.log(selected[0].text);
    }           
   },
   …
});