Гибкое связывание данных с шаблоном View-Model - PullRequest
0 голосов
/ 16 июля 2011

Я пытаюсь перейти к использованию шаблона View / Model / View-Model или Presentation Model в приложении Flex, поскольку это определенно похоже на «правильный» способ выполнения задач. У меня есть вопрос о том, как что-то должно работать с привязкой данных Flex.

Скажем, у меня есть Project класс модели, который содержит привязываемое поле имени. Я хочу сделать отчет для отображения информации о проекте. Название отчета должно быть [Название проекта] Сводка. Я хочу создать класс View-Model, чтобы обеспечить поддержку отчета. Этот класс SummaryViewModel будет иметь поле title для предоставления заголовка отчета.

В моем отчете mxml я бы привязал метку заголовка к summaryModel.title, однако title нужно каким-то образом привязать к projectModel.name, поэтому, если имя изменяется в другой части программы, заголовок отчета также обновляется. 1013 *

Как правильно выполнить эту «двухуровневую» привязку данных во Flex? Должен ли я делать вещи по-другому?

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Допустим, у вас есть такая модель:

[Bindable]
public class Project {
    public var name:String;
}

И у вас есть модель презентации:

[Bindable]
public class SummaryPresentationModel
{
    private var projectModel:Project = new Project();

    public var title:String;
}

В своем конструкторе вы можете связать данные с установщиком модели.к функции, которая устанавливает заголовок:

    public function SummaryPresentationModel() {
        BindingUtils.bindSetter(modelNameChanged, projectModel, "name");
    }

А затем установите значение title:

    private function modelNameChanged(newValue:String):void {
        title = "[" + projectModel.name + "] Summary";
    }

После этого вы можете свободно связываться с summaryPM.title, и все будетцепочка к пользовательскому интерфейсу при изменении projectModel.name.

Вы можете усложнить ситуацию и использовать функцию "getter" на title (в отличие от простой установки, как я здесь), но вам нужно распространятьуведомление об изменении.Мне не так уж сложно это сделать, но я считаю, что этот метод немного проще в использовании.

Надеюсь, это поможет!

0 голосов
/ 16 июля 2011

Ничем не отличается от любой другой привязки, они оба будут обновлены (как место, куда вы помещаете заголовок, так и итоговую модель).

Если вы опубликуете, как вы определяете свои значения, я могу помочь вам с синтаксисом, но это не сложная операция привязки. Там, где все становится немного сложнее, будет двухстороннее связывание.

...