我有一个客户端对象模型,它应该恢复任意一组jquery UI对话框的位置。我使用了knockout-jqueryui库(位于:http://gvas.github.io/knockout-jqueryui/dialog.html),语法如下:
<div class="documentWindow" data-bind="dialog: {resizable: true, title: windowTitle, width: width, height: height, position: windowPosition }">
在我的模型中,我有x和y的属性,加上jquery位置的计算属性(顺便说一下,我觉得它很整洁,但是对于我所做的事情来说,过于复杂到无用的地步。我在这里做,这是一个容器内的绝对定位)。这是返回windowPosition值的代码:
self.x = ko.observable(data.x);
self.y = ko.observable(data.y);
self.windowPosition = ko.computed({
read: function() {
var ret = { my: 'left top', at: self.x() + 'px ' + self.y() + 'px', of: '#dashboard' };
return ret;
},
write: function(newVal) {
//Do something here in a minute.
}
});
我已经用不同的坐标硬编码了两个视图对象,但我无法让这个愚蠢的对象正常行动。有没有一些特殊的语法告诉这个东西把左上角放在x,y左边的包含元素的左上角(假设容器是硬编码的,此刻)?我也试过了:
return { my: 'left+' + self.x() + ' top+' + self.y(), at: 'left top', of: '#dashboard' };
和
return { my: 'left-' + self.x() + ' top-' + self.y(), at: 'left top', of: '#dashboard' };
没有更好的结果。
如果没有所有疯狂的位置,是不是只能指定这个内联?