Kendo ui:无法将文本值和按钮单击事件绑定到viewModel以获取动态创建的HTML内容

时间:2017-08-09 06:47:48

标签: jquery data-binding kendo-ui dynamic-binding kendo-mvvm

我正在使用Kendo MVVM并使用viewModel将文本字段值和按钮点击事件绑定到data attribute

我可以成功绑定文本框的默认值,并单击最初在页面上呈现的按钮事件。

但是当我动态生成文本框和按钮时,我无法将值和点击事件绑定到viewModel

这是我的工作DEMO。以下是我的代码:

JS:

var viewModel = kendo.observable({
    textValue: 1,
    buttonClick: function(e) {
        alert("button click");
    },
  generateDynamicContent: function() {
    var html = '<input data-bind="value: dynamicTextValue" name="dynamicTextValue"/><input type="button" value="Dynamic Button" data-bind="click: dynamicButtonClick"/>';

        $('#dynamicContent').append(html);

  },
    dynamicTextValue: 2,
    dynamicButtonClick: function(e) {
        alert("dynamic button click");
    },
});
kendo.bind($("#example"), viewModel);

HTML:

<div id="example">
<input data-bind="value: textValue" name="textValue"/>
<input type="button" value="Button" data-bind="click: buttonClick"/>

<br />
<input type="button" value="Generate Dynamic Content" data-bind="click: generateDynamicContent"/>

<br/>
<div id="dynamicContent">
</div>

</div>

1 个答案:

答案 0 :(得分:2)

试用此代码

在追加html后添加kendo.bind($("#example"), viewModel);

var viewModel = kendo.observable({
    textValue: 1,
    buttonClick: function(e) {
        alert("button click");
    },
  generateDynamicContent: function(e) {
    var html = '<input data-bind="value: dynamicTextValue" name="dynamicTextValue"/><input type="button" value="Dynamic Buttondddd" data-bind="click: dynamicButtonClick"/>';

    $('#example').append(html);
    //--------THIS LINE IS IMPORTANT
    kendo.bind($("#example"), viewModel);
  },
    dynamicTextValue: 2,
    dynamicButtonClick: function(e) {
        alert("dynamic button click");
    },
});

kendo.bind($("#example"), viewModel);

DEMO