我有一個使用函數傳遞參數的自定義組件。在這種情況下,可觀察值($ data)不會改變,但該函數使用另一個observable(正在改變)和一個哈希表(它正在改變,但不能被觀察到)。Knockout自定義組件不更新
的顯示更新當我使用這個語法:當我使用這個語法
<span style="width: 50px; position: absolute; left: 1100px;text-align:center" data-bind="component: {name: ''rotate'', params: {values: Helper.GetWeatherByFlight($data, ''Hi'')}}"></span>
但它不更新:
<rotate style="width: 50px; position: absolute; left: 1100px;text-align:center" params="{values: Helper.GetWeatherByFlight($data, ''Hi'')}"></rotate>
這是組件:
ko.components.register('rotate', {
viewModel: function (params) {
var values = [];
var inputValues = ko.isObservable(params.values) ? params.values() : params.values;
var length = inputValues.length;
this.MyClass = length > 1 ? "fade-effect" : "";
if (length >= 1) {
var index = m_counter % length;
$.each(inputValues, function (i, value) {
var opacity = (index == i) ? 1 : 0;
values.push({ value: value, opacity: opacity });
});
}
this.values = values;
},
template: '<span style="position:relative;" data-bind="foreach: values, attr: { class: MyClass }">\
<span style="left:0px;top:0px;position:absolute;width:100%;height:100%;" data-bind="text: Helper.GetValue(value, $element), style: {opacity: opacity}"></span>\
</span>'
});
我寧願能夠使用第二種格式,但現在我堅持第一種格式。有沒有什麼我可以改變的,無論是在組件中,還是組件被調用的方式,所以使兩種格式都能正確更新?我意識到這是一種非常規的用法。
自定義命名的組成元素不需要PARAMS =屬性中「」大括號內。這只是逗號分隔的值,如在常規的舊數據綁定=「」中。 「 params =」值:Helper.GetWeatherByFlight($ data,'Hi')「應該足夠了。 – Budhead2004