2013-05-23 3 views
0

Я хотел бы удалить правила валидации из metadataStore. В документации это упоминалось, что:breezejs: удаление правил проверки

«Для большинства приложений, вы должны ждать untl клиент извлечет метаданные с сервера. Вы можете получить эти метаданные явно или до тех пор, пока Бриз не получит его неявно во время первого запроса. '

Я хочу удалить правило проверки из конструктора, зарегистрированного с registerEntityTypeCtor, так как я считаю, что это хорошее место для этого. Но эта функция вызывается для всех сущностей, а код для удаления правила проверки должен выполняться только один раз, не нужно вызывать его каждый раз, когда создается сущность. Поэтому, как я могу это сделать только в первый раз, когда метаданные будут извлечены?

ответ

1

Я думаю, что лучший подход для этого - инициировать получение метаданных самостоятельно. то есть вызвать EntityManager.fetchMetadata и выполнить удаление в пределах части «затем» вызова.

myEntityManager.fetchMetadata().then(function() { 
    // perform your removals here. 
} 

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

+0

Я пробовал делать это уже в конструкторе службы, где я настраиваю datamanager breeze. Проблема в том, что этот код называется неявно с помощью преобразователя зависимости AngularJS, когда служба вводится в мой контроллер (я знаю, что мы немного не в теме, потому что я использую AngularJS). Когда обещание вернется, уже слишком поздно, поскольку код вызова не дождался, пока обещание будет разрешено. Вы хоть представляете, как я могу это сделать так, как я объяснил в своем посте? – Sam

+0

Не уверен, что я понимаю, даже если Angular разрешает зависимости раньше, у вас не будет проблемы, если/до тех пор, пока не будет выполнен первый запрос. И это под вашим контролем, не так ли? Я, вероятно, неправильно истолковал ваш вопрос и ... Я не уверен, что понимаю зависимости и порядок выполнения для вашего приложения. Но если вы действительно хотите удалить валидацию в ctor, вы можете установить свой собственный флаг validationsRemoved на entityType, чтобы указать, были ли вы «очищены» проверки и каждый раз, когда вы вызываете ctor, проверяете этот флаг. Первый вызов удалит проверки и затем установит флаг. –

+0

Да, проблема довольно специфична для моего собственного кода. Это неважно, я это выясню. Однако, просто мысль, но разве было бы здорово найти способ узнать, что метаданные возвратились с сервера в первый раз? Обработчик событий может быть запущен для обработки таких вещей, как добавление/удаление правил проверки. – Sam

Смежные вопросы