所以我建立这个图表建设用户界面。你可以从数据库中选择字段来构建图表。并且图形具有刷新间隔下拉列表。KnockoutJS +选择重置我的可观察值后,我设置
一切正常,直到我试图从保存的“视图”中加载一个值 值设置为我可以看到当我添加一个订阅到RefreshInterval变量。
但它会立即被重置为我的选项数组的0'd索引。
[HTML]
<div class="wrapper wrapper-content" id="charts">
<select id="interval" data-bind="options: RefreshIntervals,
optionsText: 'Value',
value: RefreshInterval,
chosen: {
disable_search_threshold: 0,
width:'175px',
no_results_text: 'No results!',
placeholder_text_single: 'Select an interval',
search_contains: true,
}">
</select>
</div>
[JavaScript的]
function ViewModel() {
var self = this;
this.RefreshIntervals = ko.observableArray([
new Interval(0, "Never"), new Interval(10, "seconds"), new Interval(1, "minutes"), new Interval(5, "minutes")
]);
this.RefreshInterval = ko.observable(new Interval(5, "minutes"));
};
var Interval = (function() {
function Interval(length, measurement) {
var _this = this;
this.Length = 0;
this.Measurement = "";
this.Value = "";
this.TimeoutValue = 0;
this.GetTimeoutValue = function() {
switch (_this.Measurement) {
case "seconds":
return _this.Length * 1000;
case "minutes":
return _this.Length * 60000;
default:
return 0;
}
};
this.Length = length;
this.Measurement = measurement;
if (length == 0 || measurement == "Never") {
this.Value = "Never";
}
else {
this.Value = this.Length + " " + this.Measurement;
}
this.TimeoutValue = this.GetTimeoutValue();
}
return Interval;
}());
ko.bindingHandlers.chosen =
{
init: function (element, valueAccessor, allBindings) {
$(element).chosen(valueAccessor());
// trigger chosen:updated event when the bound value or options changes
$.each('value|selectedOptions|options'.split("|"), function (i, e) {
var bv = allBindings.get(e);
if (ko.isObservable(bv)) {
bv.subscribe(function() {
$(element).trigger('chosen:updated');
});
}
});
}
};
var vm = new ViewModel();
ko.applyBindings(vm, document.getElementById("charts"));
我这里有一个小提琴:Fiddle
我有需要,这些下拉框3被填充。 我希望该值是实际的元素,而不是一个值字段,然后我需要与选项列表中的实际对象共同关联,因为选项列表可能会更改。
任何线索我怎么能解决这个问题?
我试图将其设置为10秒。作为小提琴的底线。似乎没有发生在我身上。它永远不会。如果我将它设置为“10秒”,它会在select中正确显示,但observable不是它需要的元素,它是一个字符串。 – Puzzle84
阿叶我看到了,对不起,错过了,已经更新了答案和小提琴。 – Baconbeastnz
你先生是救世主。如果只有我可以把头发拉回来.. – Puzzle84