Использование Base2 с KnockoutJS View Models - PullRequest
1 голос
/ 24 октября 2011

Я использую Base2 как средство, позволяющее нам легко осуществлять наследование в нашей системе, а также использовать KnockoutJS для некоторых взаимодействий пользовательского интерфейса.

Мы определили базовый класс для наших ViewModels

BaseViewModel = Base.extend({
    ...
});

Что мы затем расширим для наших моделей:

ExampleViewModel = BaseViewModel.extend({
    text: ko.observable("")
});

Однако, похоже, есть проблема. Когда вы создаете 2+ экземпляра модели представления (скажем, если вы помещаете их в observableArray и используете шаблоны для создания пользовательского интерфейса), это похоже на любые изменения, сделанные в связанном поле, обновляет все модели представления, а не только одну. это связано с

Кто-нибудь знает, почему это может быть?

1 Ответ

0 голосов
/ 08 ноября 2011

Поскольку расширение фактически не создает новую наблюдаемую сущность, оно просто копирует ссылку.

Я думаю, вы можете сделать что-то вроде этого:

ExampleViewModel = BaseViewModel.extend({
    constructor: function() {
        this.text = ko.observable("");
    }
});

Не такой приятный, как обычный синтаксис Base2, но лишь ограничение в реализации Knockout из-за проблем со свойствами.

...