У меня возникли проблемы с компонентом: шаблон, кажется, не связываются со значениями в ViewModel.компонент связывания с ViewModel к шаблону
Это где начинается действие
<div data-bind="foreach: orderItem">
<item-widget params="productname: Product,
casetopallet: CaseToPallet,
requiredcases: RequiredCases,
"></item-widget>
</div>
<div class="OrderItem">
<input class="locknumin" type="number" data-bind="attr: {value: collectedCases}"></input>
<input class="locknumin" type="number" data-bind="attr: {value: requiredCases}"></input>
<input class="locknumin" type="number" data-bind="attr: {value: collectedPallets}"></input>
<input class="locknumin" type="number" data-bind="attr: {value: requiredPallets}"></input>
<input type="text" data-bind="attr: {value: $component.productName}"></input>
</div>
Когда ключ Титулы == атрибут всех привязок показывается нормально, за исключением того, когда я пытаюсь использовать вычислимый, который не будет отображаться себя в то время как остальные будут.
function OrderItemVeiwModel(params) {
var self = this;
self.productName = ko.observable(params.productname);
self.caseToPallet = ko.observable(params.casetopallet);
self.requiredCases = ko.observable(params.requiredcases);
self.collectedCases = ko.computed();
self.collectedPallets = ko.observable();
self.requiredPallets = ko.observable(function(){return this.collectedCases/this.casetoPallet;})
};
ko.components.register('item-widget', {veiwModel: OrderItemVeiwModel, template:{element: OrderItemTemplate}});
Но вычисленное значение никогда не отображается. Чтобы узнать, что происходит, я изменил все ключи param, чтобы ViewModel мог обращаться к ним, но не к шаблону, и ничего не отображается.
Вопрос: должен ли я ожидать, что представление связывается с данными wiwModel здесь, или мне нужно создать компонент другим способом? Или есть простая ошибка, которую я сделал?
Также есть какие-либо отладчики, которые я могу использовать в javascript, которые позволят мне заглядывать в значения объекта, чтобы я мог самостоятельно изучить эти вещи.
======================== ======================================================================================================================================== ============================= я поглядела с отладочной версии выколотки и хрома Дев утилитами (гораздо лучше, чем fireFoxes) ошибка возникает в
ko.bindingHandlers.attr.update
, когда он пытается развернуть наблюдаемые. Так что, по крайней мере, я знаю, что привязка от модели к веной. Мне нужно будет попытаться объединить veiwModel с init или что-то, поскольку оно явно не в контексте привязки, как есть; или, возможно, настроить привязки вручную. Спасибо за ответ. Я боюсь, что могу немного застрять на этом неправильном методе создания компонентов, потому что он выглядит довольно простым и аккуратным. ps Я пробовал себя, наблюдаемый, не наблюдаемый, bind (this/self), используя только одно значение в vm и почти все возможные комбинации $ data $ -компонентов только для одного значения вейвмодели
вычисленного должен быть определен с помощью функции в качестве параметра. Что вы ожидаете от него? –
Ahh извините, что рассчитанный я имею в виду requiredPallets. Я немного поиграл с кодом после обнаружения проблемы перед публикацией. Я пытаюсь атаковать, чтобы отобразить наилучшее значение atm, получая данные вейвмоделей, привязанные к вычисленной вейле, или нет. – goodlymcnotroublehere
Попробуйте используя 'self' вместо' this' в 'requiredPallets'. –