использование вычисляемого свойства в шаблоне dom repeat, похоже, фактически не получает данные

#dart #polymer-1.0 #dart-polymer

#dart #polymer-1.0 #dart-polymer

Вопрос:

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

 <my-radiolist value="{{myValue}}">
  <template is="dom-repeat" items="{{test}}">
    <my-radiobutton value="{{item}}" label="{{item}}"></my-radiobutton>
  </template>
</my-radiolist>
  

и когда test определяется как:

 @property List<int> test = [1,2,3];
  

это работает просто отлично.

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

 @Property(computed:"getTest()")
List<Map> test = null;

@reflectable
List<Map> getTest() {
  print("Inside my getTest Function");
  return [{"key": "test", "value": "test"}, {"key":"test 2","value":"test 2"}];
}
  

Я заметил, что мой оператор print никогда не запускался, поэтому мое свойство имеет значение по умолчанию, что означает, что перебирать нечего.

Я делал это раньше, но не для повторителей шаблонов. Я что-то делаю не так?

Я думаю, что, поскольку вычисляемые обновления обновляются при обновлении аргумента, и поскольку я не использую никаких аргументов, использование вычисляемого свойства в этом случае — это не тот курс действий, который я должен предпринять.

Ответ №1:

Значение интерпретируется как имя метода и список аргументов. Метод вызывается для вычисления значения всякий раз, когда изменяется какое-либо из значений аргумента. Вычисляемые свойства никогда не должны записываться напрямую. Дополнительные сведения см. в разделе Вычисляемые свойства.

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

См. Также https://github.com/dart-lang/polymer-dart/wiki/properties#computed-properties

Комментарии:

1. Вот что я подумал. Я надеялся, что оно будет выполнено один раз. Я просто пытался очистить код, не жестко кодируя значение свойства при определении, чтобы сохранить его упорядоченным. В итоге я просто сделал это.