#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. Вот что я подумал. Я надеялся, что оно будет выполнено один раз. Я просто пытался очистить код, не жестко кодируя значение свойства при определении, чтобы сохранить его упорядоченным. В итоге я просто сделал это.