如何从类型为:'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);
}
},
…
});
我正在 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);
}
},
…
});