如何从类型为:'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-editable。我想从数据源中存储相应值的文本。我只能将值存储在数据库中。

我的看法:

<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];});
    },
    // ...
});

我也遇到了同样的问题。关键是我想将值和显示的文本分开,但是在 select 被 selected 之后我仍然需要得到这个 'shown text' 来满足某些显示需求。 (假设我想创建一个模式 window 来确认选择的文本,而不是值)。我们怎样才能取回这段文字? 之前的答案告诉我们:不要将文本和值分开。 好吧,我确实需要将它们分开。

由于其他地方的 K Scandrett 的回答,这是我可以设法构建的解决方案。 我正在寻找 "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);
    }           
   },
   …
});