当前位置: 首页 > 知识库问答 >
问题:

剑道ui-如何将剑道mvvm自动完成字段的选择事件附加到视图模型

东门俊民
2023-03-14

在剑道自动完成字段的mvvm html属性中,是否有一种直接的方法来定义“选择”事件处理程序函数?

例如,下面是使用jQuery设置的自动完成字段的工作版本:

$("#fieldProjectName").kendoAutoComplete({
  minLength: 4,
  filter: "contains",
  dataTextField: "ProjectName",
  placeholder: "Begin typing the Project Name",
  select: function (e) { selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName") },
  dataSource: dataProjectList,
});

到目前为止,这是使用MVVMHTML属性“data-?”在模板中定义类似字段的等效版本

<input name="ProjectItemKey"
  data-bind="value:ProjectName"
  data-value-primitive="true"  
  data-value-field="ProjectItemKey"
  data-text-field="ProjectName"
  data-source="dataProjectList"
  data-role="autocomplete" 
  data-min-length="4"
  data-filter="contains"
  data-placeholder="Begin typing the Project Name"
/>

我们不知道如何在这个mvvm html属性结构中定义选择事件的事件处理程序,它相当于第一个例子中的“选择:”属性:

  select: function (e) { selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName") },

例如,如果有如下情况:

  data-select: "onSelectProject"

然后,我们可以在模板中包含此函数来处理选择事件:

  function onSelectProject(e) {
    selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName");
  }

不幸的是,我们不知道怎么做。我们所看到的唯一相关文档涉及设置自定义剑道。使用嵌入在模型中的自定义方法创建可观察模型,然后在数据绑定事件中设置某些内容。然而,这似乎是一种非常复杂和间接的方法。此外,我们不知道如何操作该模型,因为它来自一个kendoGrid,然后该kendoGrid使用一个自定义记录编辑模板,该模板包含这个自动完成字段。

我们花了很多时间试图找到这一个,所以任何帮助将不胜感激。

共有2个答案

章德惠
2023-03-14

使用Kendo MVVM进行事件和数据属性绑定的一些参考:

使用MVVM自动完成剑道

使用MVVM绑定事件

下面是如何使用数据属性来配置使用MVVM的小部件

您可以将选择事件绑定到viewModel,如下所示:

<input data-role="autocomplete" 
       data-bind="events: { select: onAutocompleteSelect}" 
       .... 
/>

假设你的JS大致如下:

var names = [
{"name": "Gilberto"},
{"name": "Dennis"},
{"name": "Joanna"},
{"name": "Abbigail"},
{"name": "Shannon"},
{"name": "Kadyn"},
{"name": "Gregory"}
];
var viewModel = kendo.observable({
    list: names,
    sel:'',
    onAutocompleteSelect: function (e){
        alert('Autocomplete select event');
    }
});
kendo.bind($('#persons'), viewModel);

超文本标记语言:

<div id="persons">
<input
  data-role="autocomplete" 
  data-bind="source: list, value: sel, events: { select: onAutocompleteSelect}"
  data-value-primitive="true"  
  data-value-field="name"
  data-text-field="name"
  data-min-length="4"
  data-filter="contains"
  data-placeholder="Begin typing the Project Name"
/>
</div>

陶英纵
2023-03-14

您应该在data-bind属性中包含选择事件。

数据绑定=事件:{Select: onSelect}

检查这个jsFiddle。

 类似资料:
  • 如何在更改函数上选择剑道下拉列表值。剑道下拉列表在网格中。在更改函数中,我想选择列表中的第一项。 我已经编写了代码: 但是下拉列表没有选择更改功能。我该怎么做请帮帮我。

  • 问题内容: 我正在将Kendo下拉列表从现有代码转换为Kendo multiselect。 角色代码:当前为Dropdownlist(转换为Kendo multiselect)。 我没有得到正确的输出。 我有以下代码: 下面是获取角色代码的控制器代码: 如您所见,我尝试在上面的代码中使用多选功能。但这没有用。 问题答案: 下面的代码为我工作:

  • 我有剑道下拉列表,我想选择下拉列表的选择值。我得到了选定项目的文本,但不是应该是ID的值。 绑定数据与Dropdown列表剑道 使用剑道下拉列表绑定选择函数。

  • 我想定制剑道折线图如下: 我想在剑道折线图上显示右侧的堆积条形图。 有什么方法可以使用MVC来实现这一点吗

  • 我不认为实现这样一个常见的简单场景有那么难,但我有一个剑道下拉列表,它使用MVVM风格进行初始化,它绑定了一个远程数据源。 我想要实现的是,一旦远程数据源准备好并绑定到小部件,默认情况下会选择第一个选项(当然,第一个项目的值应该绑定到视图模型) 我试图直接使用上面的代码来做这件事,它将一个dataBound事件绑定到小部件,并在它触发时选择第一个项目。回调方法被调用时没有错误,但是小部件从不选择第

  • 我对某些字段的验证有问题。我只想验证几个字段,其他字段不应该验证。在我的Email字段中,我启动了一个函数来检查格式是否正确,但其他字段只是设置为验证。任何帮助都将不胜感激。 使用此代码,在尝试保存/更新时将验证所有字段。我不想验证分机或电话号码。