函数语句需要一个名字
Function statement requires a name
我已经尝试了各种方法,但我遗漏了一些东西...
这是我的代码:
Mobile.Customer = (function (params) {
var viewModel = {
};
return {
viewModel: viewModel
}
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var dataGrid = $("#gridContainer").dxDataGrid({
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: true,
applyFilter: "auto"
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right',
//dataType: 'date'
}, {
dataField: "Code",
alignment: 'right',
// format: "currency"
}
]
}()).dxDataGrid('instance');
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}]
$("#useFilterApplyButton").dxSelectBox({
items: applyFilterTypes,
value: applyFilterTypes[0].key,
valueExpr: "key",
displayExpr: "name",
onValueChanged: (function (data) {
dataGrid.option("filterRow.applyFilter", data.value);
}())
}());
$("#filterRow").dxCheckBox({
text: "Filter Row",
value: true,
onValueChanged: (function (data) {
dataGrid.clearFilter();
dataGrid.option("filterRow.visible", data.value);
$(".apply-filter-option").css("display", data.value ? "block" : "none");
}())
}());
})();
它在第一行就抱怨,所以我不知道该怎么办。我在某处有一个额外的 () 或其他东西 - 我不知道。我对这段代码很陌生。
有人可以帮忙吗?
编辑
感谢您的所有回复。我很欣赏并有点理解你在说什么。由于在 google 和此处进行了搜索,所以我添加了额外的 () 并且不止一次被建议。
这是 Dextreme 应用程序。上面的代码在我的 dxView 文件的随附 js 文件中,如下所示:
<pre> <div data-options="dxView : { name: 'Customer', title: 'Customer' } " >
<div data-options="dxContent : { targetPlaceholder: 'content' } " >
<div class="autocomplete" data-bind="dxAutocomplete: {
dataSource: gridDataSourceConfiguration,
displayExpr: 'Description',
placeholder: 'Enter Customer Name',
itemTemplate: 'item'
}">
</div>
<div class="apply-filter-option">Apply Filter <div id="useFilterApplyButton"></div></div>
<div id="gridContainer"></div>
<div class="options"><div id="filterRow"></div></div>
</div>
</div></pre>
此代码用于设置具有信息和过滤功能的datagridview。
需要您提供更多信息,但这里已修复您的一些错误..
1) 你在不应该出现的地方有过多的 () (会立即调用你的函数)
2) 你也没有声明 Mobile 所以不能附加 属性 到它
3) 看起来你在用 viewModel 做一些狡猾的事情,但在不了解更多的情况下我真的不能确定
var Mobile = {};
Mobile.Customer = (function () {
var viewModel = {};
return {
viewModel: viewModel
};
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var dataGrid = $("#gridContainer").dxDataGrid({
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: true,
applyFilter: "auto"
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right',
//dataType: 'date'
}, {
dataField: "Code",
alignment: 'right',
// format: "currency"
}]
}).dxDataGrid('instance');
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}];
$("#useFilterApplyButton").dxSelectBox({
items: applyFilterTypes,
value: applyFilterTypes[0].key,
valueExpr: "key",
displayExpr: "name",
onValueChanged: function (data) {
dataGrid.option("filterRow.applyFilter", data.value);
}
});
$("#filterRow").dxCheckBox({
text: "Filter Row",
value: true,
onValueChanged: function (data) {
dataGrid.clearFilter();
dataGrid.option("filterRow.visible", data.value);
$(".apply-filter-option").css("display", data.value ? "block" : "none");
}
});
})();
您的代码不起作用,因为您混淆了两种不同的方式:MVVM 和 jQuery-方式。
默认的 DevExtreme 应用程序基于 MVVM 方法(通过 knockoutjs)。因此,我建议您将所有小部件选项移至视图模型。
视图模型应该如下所示:
Mobile.Customer = function(params) {
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}];
var dataGridOptions = {
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: ko.observable(true),
applyFilter: ko.observable("auto")
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right'
}, {
dataField: "Code",
alignment: 'right'
}
]
};
var selectBoxOptions = {
items: applyFilterTypes,
value: ko.observable(applyFilterTypes[0].key),
valueExpr: "key",
displayExpr: "name"
};
var checkBoxOptions = {
text: "Filter Row",
value: ko.observable(true)
};
var applyFilterVisible = ko.observable(true);
selectBoxOptions.value.subscribe(function(value) {
dataGridOptions.filterRow.applyFilter(value);
});
checkBoxOptions.value.subscribe(function(value) {
$("#gridContainer").dxDataGrid("instance").clearFilter();
dataGridOptions.filterRow.visible(value);
applyFilterVisible(value);
});
var viewModel = {
gridDataSourceConfiguration: gridDataSourceConfiguration,
selectBoxOptions: selectBoxOptions,
checkBoxOptions: checkBoxOptions,
dataGridOptions: dataGridOptions,
applyFilterVisible: applyFilterVisible
};
return viewModel;
};
为了检查某些小部件值何时更改,我使用了 ko.observable 和 ko.subscribe
函数。
现在,我们可以更新视图了:
<div data-options="dxView : { name: 'Customer', title: 'Customer' } " >
<div data-options="dxContent : { targetPlaceholder: 'content' } " >
<div class="autocomplete" data-bind="dxAutocomplete: {
dataSource: gridDataSourceConfiguration,
displayExpr: 'Description',
placeholder: 'Enter Customer Name',
itemTemplate: 'item'
}">
</div>
<div class="apply-filter-option" data-bind="visible: applyFilterVisible">
Apply Filter
<div id="useFilterApplyButton" data-bind="dxSelectBox: selectBoxOptions"></div>
</div>
<div id="gridContainer" data-bind="dxDataGrid: dataGridOptions">
</div>
<div class="options"><div id="filterRow" data-bind="dxCheckBox: checkBoxOptions"></div></div>
</div>
</div>
我已经尝试了各种方法,但我遗漏了一些东西...
这是我的代码:
Mobile.Customer = (function (params) {
var viewModel = {
};
return {
viewModel: viewModel
}
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var dataGrid = $("#gridContainer").dxDataGrid({
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: true,
applyFilter: "auto"
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right',
//dataType: 'date'
}, {
dataField: "Code",
alignment: 'right',
// format: "currency"
}
]
}()).dxDataGrid('instance');
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}]
$("#useFilterApplyButton").dxSelectBox({
items: applyFilterTypes,
value: applyFilterTypes[0].key,
valueExpr: "key",
displayExpr: "name",
onValueChanged: (function (data) {
dataGrid.option("filterRow.applyFilter", data.value);
}())
}());
$("#filterRow").dxCheckBox({
text: "Filter Row",
value: true,
onValueChanged: (function (data) {
dataGrid.clearFilter();
dataGrid.option("filterRow.visible", data.value);
$(".apply-filter-option").css("display", data.value ? "block" : "none");
}())
}());
})();
它在第一行就抱怨,所以我不知道该怎么办。我在某处有一个额外的 () 或其他东西 - 我不知道。我对这段代码很陌生。
有人可以帮忙吗?
编辑
感谢您的所有回复。我很欣赏并有点理解你在说什么。由于在 google 和此处进行了搜索,所以我添加了额外的 () 并且不止一次被建议。
这是 Dextreme 应用程序。上面的代码在我的 dxView 文件的随附 js 文件中,如下所示:
<pre> <div data-options="dxView : { name: 'Customer', title: 'Customer' } " >
<div data-options="dxContent : { targetPlaceholder: 'content' } " >
<div class="autocomplete" data-bind="dxAutocomplete: {
dataSource: gridDataSourceConfiguration,
displayExpr: 'Description',
placeholder: 'Enter Customer Name',
itemTemplate: 'item'
}">
</div>
<div class="apply-filter-option">Apply Filter <div id="useFilterApplyButton"></div></div>
<div id="gridContainer"></div>
<div class="options"><div id="filterRow"></div></div>
</div>
</div></pre>
此代码用于设置具有信息和过滤功能的datagridview。
需要您提供更多信息,但这里已修复您的一些错误..
1) 你在不应该出现的地方有过多的 () (会立即调用你的函数) 2) 你也没有声明 Mobile 所以不能附加 属性 到它 3) 看起来你在用 viewModel 做一些狡猾的事情,但在不了解更多的情况下我真的不能确定
var Mobile = {};
Mobile.Customer = (function () {
var viewModel = {};
return {
viewModel: viewModel
};
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var dataGrid = $("#gridContainer").dxDataGrid({
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: true,
applyFilter: "auto"
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right',
//dataType: 'date'
}, {
dataField: "Code",
alignment: 'right',
// format: "currency"
}]
}).dxDataGrid('instance');
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}];
$("#useFilterApplyButton").dxSelectBox({
items: applyFilterTypes,
value: applyFilterTypes[0].key,
valueExpr: "key",
displayExpr: "name",
onValueChanged: function (data) {
dataGrid.option("filterRow.applyFilter", data.value);
}
});
$("#filterRow").dxCheckBox({
text: "Filter Row",
value: true,
onValueChanged: function (data) {
dataGrid.clearFilter();
dataGrid.option("filterRow.visible", data.value);
$(".apply-filter-option").css("display", data.value ? "block" : "none");
}
});
})();
您的代码不起作用,因为您混淆了两种不同的方式:MVVM 和 jQuery-方式。
默认的 DevExtreme 应用程序基于 MVVM 方法(通过 knockoutjs)。因此,我建议您将所有小部件选项移至视图模型。
视图模型应该如下所示:
Mobile.Customer = function(params) {
var gridDataSourceConfiguration = [{
"InternalID": 1,
"Code": 'TEST 1',
"Name": 'Test 1 Test 1'
},
{
"InternalID": 4,
"Code": 'TEST 2',
"Name": 'Test 2 Test 2'
},
{
"InternalID": 5,
"Code": 'TEST 3',
"Name": 'Test 3 Test 3'
}];
var applyFilterTypes = [{
key: "auto",
name: "Immediately"
}, {
key: "onClick",
name: "On Button Click"
}];
var dataGridOptions = {
dataSource: gridDataSourceConfiguration,
filterRow: {
visible: ko.observable(true),
applyFilter: ko.observable("auto")
},
searchPanel: {
visible: true,
width: 240,
placeholder: 'Search...'
},
headerFilter: {
visible: true
},
columns: [{
dataField: "InternalID",
width: 30,
caption: "ID"
}, {
dataField: 'Name',
alignment: 'right'
}, {
dataField: "Code",
alignment: 'right'
}
]
};
var selectBoxOptions = {
items: applyFilterTypes,
value: ko.observable(applyFilterTypes[0].key),
valueExpr: "key",
displayExpr: "name"
};
var checkBoxOptions = {
text: "Filter Row",
value: ko.observable(true)
};
var applyFilterVisible = ko.observable(true);
selectBoxOptions.value.subscribe(function(value) {
dataGridOptions.filterRow.applyFilter(value);
});
checkBoxOptions.value.subscribe(function(value) {
$("#gridContainer").dxDataGrid("instance").clearFilter();
dataGridOptions.filterRow.visible(value);
applyFilterVisible(value);
});
var viewModel = {
gridDataSourceConfiguration: gridDataSourceConfiguration,
selectBoxOptions: selectBoxOptions,
checkBoxOptions: checkBoxOptions,
dataGridOptions: dataGridOptions,
applyFilterVisible: applyFilterVisible
};
return viewModel;
};
为了检查某些小部件值何时更改,我使用了 ko.observable 和 ko.subscribe
函数。
现在,我们可以更新视图了:
<div data-options="dxView : { name: 'Customer', title: 'Customer' } " >
<div data-options="dxContent : { targetPlaceholder: 'content' } " >
<div class="autocomplete" data-bind="dxAutocomplete: {
dataSource: gridDataSourceConfiguration,
displayExpr: 'Description',
placeholder: 'Enter Customer Name',
itemTemplate: 'item'
}">
</div>
<div class="apply-filter-option" data-bind="visible: applyFilterVisible">
Apply Filter
<div id="useFilterApplyButton" data-bind="dxSelectBox: selectBoxOptions"></div>
</div>
<div id="gridContainer" data-bind="dxDataGrid: dataGridOptions">
</div>
<div class="options"><div id="filterRow" data-bind="dxCheckBox: checkBoxOptions"></div></div>
</div>
</div>