2016-10-21 6 views
1

У меня есть 2 переменных. model и _model. По сути, модель будет тем свойством, с которым люди свяжутся с моим шаблоном. Когда он связывается, он установит _model, а затем _model будет использоваться в дротике и в разметке для привязки формы., хотя использование _ обозначает private, могу ли я установить его как свойство?

Мой вопрос в том, что. Я знаю в Dart, подчеркивание - это обозначение частной переменной. я не был уверен, что это private охватывает область разметки, связанную с классом Дарт.

Это считая. Кажется, что, когда я установил:

_model = new Model(); 

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

set("_model", new Model()); 

класс оленья кожа понимают. Это почти так, как если бы у меня было 2 разных области _model. Может быть, я могу это сделать, изменив все ссылки _model на что-то вроде componentModel или что-то еще, что вообще не использует знак подчеркивания.

Может кто-нибудь объяснить это более ясно для меня, потому что я думаю, что я чего-то не хватает, когда дело доходит до предварительного подчеркивания и, вероятно, как набор работает.

ответ

0

Не уверен, что вы ожидаете от

_model = new Model(); 

Это нормальный код и должен работать.

set("_model", new Model()); 

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

+0

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

+1

Невозможно AFAIK. Есть попытки представить аннотации, чтобы получить поддержку анализатора, даже если он не применяется во время выполнения. Анализатор поддерживает '@ protected' и, возможно, они добавляют' @ final' или что-то в этом роде. Проверьте https://pub.dartlang.org/packages/meta (не все эти аннотации уже поддерживаются анализатором) –

+0

Коллегам не понравилось, что я использовал свои отраженные свойства после прочтения их кода, и я пытался найти способ настроить их для более частных и защищенных статусных элементов, препятствуя использованию другими разработчиками. : -/ – Fallenreaper