如何从声明式剑道ui初始化中提取js函数以提高可读性
How to extract the js function out of declarative kendo ui initialization for readability?
我有一个带有数据列的剑道网格,该数据列具有自定义下拉列表过滤器(从数据源中选择该列的唯一值)。
它工作,但我想从html中提取function(options) {...}
,因为它是可怕的不可读和visual studio 2015不将代码解释为javascript。
<div id="PatrolDurationRecords">
<div data-filterable='{ "mode": "row" }'
data-role='grid'
data-sortable='true'
data-bind='source: reportData.PatrolDurations, events: {excelExport: excelExportHandler}'
data-pageable='{ "pageSize": 10 }'
data-toolbar='["excel"]'
data-excel='{ "fileName": "PatrolDurations.xlsx", "allPages": "true" }'
data-columns='[
{
"field": "patrol_id_plain",
"title": "Patrol ID",
"filterable": false
},
{
"field": "location_name",
"title": "Location",
"filterable": {
cell: {
template: function (args) {
args.element.kendoDropDownList({
dataTextField: "optionText",
dataValueField: "optionValue",
valuePrimitive: true,
dataSource: {
transport: {
read:
function(options) { //<-- I want to extract this function outside of this html declaration
console.log("viewModel.reportData.PatrolDurations = ");
console.log(viewModel.reportData.PatrolDurations);
var len = viewModel.reportData.PatrolDurations.length;
var locationName;
var setObj = {};
for(var i = 0; i < len; i++)
{
locationName = viewModel.reportData.PatrolDurations[i].location_name;
setObj[locationName] = "";//not concerned with object value, we use setObj as a Set where the keys are the set values
}
var ddlOptions = [];
for(var e in setObj)
{
ddlOptions.push({
"optionText": e,
"optionValue": e
});
}
console.log("ddlOptions = ");
console.log(ddlOptions);
options.success(ddlOptions);
}
}
}
});
},
showOperators: false
}
}
},
{
"field": "company_name",
"title": "Company",
"filterable": { "cell": { "operator": "contains"}}
},
{
"field": "patrol_start",
"title": "Start",
"filterable": false
},
{
"field": "patrol_end",
"title": "End",
"filterable": false
},
{
"field": "patrol_user",
"title": "Patrolled By",
"filterable": { "cell": { "operator": "contains"}}
},
{
"field": "duration",
"title": "Duration",
"template": kendo.template($("#durationTemplate").html()),
"filterable": false
},
{
"title": "",
"template": kendo.template($("#viewLinkTemplate").html()),
"filterable": false
}
]'>
</div>
</div>
使用以下标准方法:
{
"field": "location_name",
"title": "Location",
"filterable": {
cell: {
template: myFunction,
showOperators: false
}
}
}
然后在其他地方定义myFunction
。
<script>
function myFunction(args) {
//args.element...
}
</script>
相关文章:
- 为什么我的控制器没有启动函数.js脚本
- 在函数js中传递变量
- 如何在单独的文件中调用函数 js.
- 在铯中调用函数.js当事件被尝试时
- 只有setTimeout执行函数.JS
- 为什么图像选择器程序中的这个函数 js 不起作用
- 获取邮件中的信息.php从函数.js解析为manage.html
- 如何从应用程序中调用JS函数.js在Rails4视图中
- Uncatch TypeError: obj.attr 不是函数 JS
- 从 C++ 节点调用 JavaScript 函数.js扩展
- 调用 Backbone 内部的外部函数.js的视图初始化方法
- 如何使用 Scala 创建 JavaScript 函数.js
- 使用带有下划线循环的回调函数.js骨干.js项目不起作用
- 获取字段值的函数-JS
- 函数js不能递归调用自己的函数
- 在函数JS中创建带有地理代码的标记
- 循环内部的函数(js/jquery)
- 我需要帮助将此代码添加到jQuery函数.js文件中
- 未捕获类型:未定义不是函数JS错误
- 停止多个内联函数JS的事件传播