我在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);
}
},
…
});