我曾经做过一次这个话题,但我所掌握的信息有点难以理解,我没有得到太多帮助,所以我在花了一天制作JSBIN样本之后再次尝试。
我有一种情况,我使用KendoUI制作视图模型,并在其中制作一些项目,当您点击绘制的子项目时,它会打开KendoWindow
让你可以更具体地编辑它们。
但是,我认为dataSource
概念存在问题。当我尝试绑定到我页面上的dataSource
时,它可以正常工作;但是当我尝试将一个kendo控件绑定到渲染窗口中的remote
数据源时,它拒绝获取。
如果我只绑定本地数据,硬编码数据,它可以工作;所以我知道dropdownlist
正在发挥作用。但我真的需要能够绑定到远程数据。
我已准备好 JSBIN 来显示此行为(或缺少此行为)
非常感谢任何帮助。要查看行为,请单击按钮Create Socket Rail
,然后使用NumericTextBox
将大小增加到大于0的任何数字,然后单击其中一个绘制的框。
答案 0 :(得分:1)
您需要在kendoWindow.activate
事件中创建kendoDropDownList(或者至少在那里绑定DataSource)。根据您的代码改编,这将有效:
kendoWindowWidget = function (options) {
// extend the settings options so that we can take
// explicit configuration from the widget caller.
var settings = $.extend({
resizable: false,
modal: true,
viewable: true,
visible: false,
width: "450px",
height: "450px",
activate: function () {
var myDataSource = new kendo.data.DataSource({
transport: {
read: {
dataType: "json",
url: "http://jsbin.com/UYEbOXi/3/js"
}
}
});
widgets.windows.sockets.type = $('#socket-type').kendoDropDownList({
dataTextField: "Name",
dataValueField: "Id",
dataSource: myDataSource
}).data("kendoDropDownList");
}
}, options);
var $window = $("<div id='kendow-editor-window'/>")
.kendoWindow(settings)
.data("kendoWindow");
$window.databind = function (e) {
kendo.bind($window.element, e);
$window.open().center();
};
// return the created combo box
return $window;
};
改编了JSBin(我删除了很多东西以便于管理): http://jsbin.com/uMuFewI/3/edit