2014-11-11 3 views
-1

Возможно ли создать какую-либо функцию before() для каждого действия внутри контроллера?Ember.JS A Функция BEFORE() для каждого действия контроллера

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

+0

Да Это (YII) –

+0

Что вы подразумеваете под «созданием той же самой функции init() для каждого действия»? Я думал, что вы хотите запустить одну и ту же логику перед каждым действием, а это значит, что вам нужно будет создать его только один раз (и почему вы бы назвали его 'init()'?). Вы имеете в виду ** называть ** это от каждого действия? Это вряд ли кажется обременительным. –

ответ

0

Нет, вы не можете запускать код перед каждым действием без прямого его вызова. В какой-то момент возникла идея поиска действий с использованием get(), что позволило бы это, но это никогда не было реализовано. Не уверен, что ваш вариант использования, но если вам действительно нужно позвонить функциональности до , то каждый звонок, просто назовите его сами. Это будет гораздо более читаемым, чем любые умные хаки, которые мы могли бы придумать.

+0

Ну, я новичок в Ember.js, но пока мне кажется, что когда я перехожу со страницы на страницу, теги и никогда не изменятся. Поскольку Ember.js - это, по сути, одностраничное приложение, хотя я могу сохранять состояния Истории, теги внутри не изменятся. Я могу попробовать положить ember-код внутри , но я чувствую, что код ember должен принадлежать только . Неужели я ошибаюсь, думая так? Как большинство людей, пишущих код ember, имеют дело с тегами? – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/4239334/">saeho</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Я не думаю, что есть предпочтительный способ иметь дело с интеграцией заголовков (пока). Но если это ваша конечная цель, [этот вопрос может быть несколько соломенником] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Я бы предложил задать новый вопрос с более подробной информацией о том, как и когда вы хотите изменить заголовок. Это поможет нам найти решение вашей исходной проблемы. (Лично я бы использовал рассчитанные свойства, но это зависит от вашего варианта использования.) – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1277669/">GJK</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4319274062" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">0<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>Вы могли бы сделать что-то вроде этого:</p> <p>Сначала убедитесь, что ваш контроллер расширяет `подмешать Ember.TargetActionSupport».</p> <pre><code class="prettyprint-override">Ember.Controller.extend(Ember.TargetActionSupport,{ ... }); </code></pre> <p>Это позволит вам запускать действия программно. Подробнее об этом: <a href="http://emberjs.com/api/classes/Ember.TargetActionSupport.html" rel="nofollow">Ember.TargetActionSupport</a></p> <p>Тогда вы бы действие точки входа, который содержит свой общий код и вызов, чтобы вызвать соответствующее действие:</p> <pre><code class="prettyprint-override">Ember.Controller.extend(Ember.TargetActionSupport,{ actions: { common: function (actionName) { //Do common logic here this.set('foo', 'bar'); //And then trigger the intended action this.triggerAction({ action: actionName, target: this }); }, otherAction: function() { //Do some more logic here this.set('bar', 'baz'); } } }); </code></pre> <p>Вы назвали бы это действие из шаблона, как это:</p> <pre><code class="prettyprint-override"><button {{action 'common' 'otherAction'}}>Press Me</button> </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/26867711">источник</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2014-11-11 14:54:54</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1574823/">Alex</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">Смежные вопросы</div> <ul class="relative_list"> <li> 1. <a href="http://ru.voidcc.com/question/p-pglezjst-rm.html" target="_blank" title="Функция вызова для каждого контроллера"> Функция вызова для каждого контроллера </a> </li> <li> 2. <a href="http://ru.voidcc.com/question/p-ejcnoswm-bv.html" target="_blank" title="Вызов функции контроллера Ember.js путем автоматизации действия"> Вызов функции контроллера Ember.js путем автоматизации действия </a> </li> <li> 3. <a href="http://ru.voidcc.com/question/p-fywykwbq-yu.html" target="_blank" title="Весна 3: A Нет контроллера действия"> Весна 3: A Нет контроллера действия </a> </li> <li> 4. <a href="http://ru.voidcc.com/question/p-wtmkotyu-bbv.html" target="_blank" title="Выполнение кода до/после каждого действия контроллера"> Выполнение кода до/после каждого действия контроллера </a> </li> <li> 5. <a href="http://ru.voidcc.com/question/p-xbuzbwyb-bpb.html" target="_blank" title="Ошибка свойства контроллера Ember.js"> Ошибка свойства контроллера Ember.js </a> </li> <li> 6. <a href="http://ru.voidcc.com/question/p-crdivzaw-bgt.html" target="_blank" title="Ошибка контроллера Ember.js"> Ошибка контроллера Ember.js </a> </li> <li> 7. <a href="http://ru.voidcc.com/question/p-nbkxkjef-xu.html" target="_blank" title="Действия записи каждого контроллера в рельсах"> Действия записи каждого контроллера в рельсах </a> </li> <li> 8. <a href="http://ru.voidcc.com/question/p-blipgafu-bpp.html" target="_blank" title="cakephp - функция обратного вызова для каждого действия контроллера для установки доступных навигационных ссылок"> cakephp - функция обратного вызова для каждого действия контроллера для установки доступных навигационных ссылок </a> </li> <li> 9. <a href="http://ru.voidcc.com/question/p-qzqysupk-sb.html" target="_blank" title="Действия контроллера для создания дочернего представления?"> Действия контроллера для создания дочернего представления? </a> </li> <li> 10. <a href="http://ru.voidcc.com/question/p-spidejhu-bpo.html" target="_blank" title="Ember.js флажок для вычисляемого свойства контроллера массива"> Ember.js флажок для вычисляемого свойства контроллера массива </a> </li> <li> 11. <a href="http://ru.voidcc.com/question/p-riemkhmx-us.html" target="_blank" title="Действия контроллера контроллера Rails"> Действия контроллера контроллера Rails </a> </li> <li> 12. <a href="http://ru.voidcc.com/question/p-mrqmmqcl-nr.html" target="_blank" title="Включить/отключить состояние сеанса для каждого контроллера/метод действия"> Включить/отключить состояние сеанса для каждого контроллера/метод действия </a> </li> <li> 13. <a href="http://ru.voidcc.com/question/p-mgpwoydx-wz.html" target="_blank" title="Проверить сеанс для каждого контроллера и действия в symfony2"> Проверить сеанс для каждого контроллера и действия в symfony2 </a> </li> <li> 14. <a href="http://ru.voidcc.com/question/p-kcyaekzb-ky.html" target="_blank" title="Zend Framework: добавить данные в макет для каждого действия контроллера"> Zend Framework: добавить данные в макет для каждого действия контроллера </a> </li> <li> 15. <a href="http://ru.voidcc.com/question/p-pmkqifol-xo.html" target="_blank" title="Нужно ли иметь отдельный просмотр для каждого действия контроллера?"> Нужно ли иметь отдельный просмотр для каждого действия контроллера? </a> </li> <li> 16. <a href="http://ru.voidcc.com/question/p-pexwubdi-bdo.html" target="_blank" title="Asp.net Mvc: вызывать логику для каждого контроллера/действия"> Asp.net Mvc: вызывать логику для каждого контроллера/действия </a> </li> <li> 17. <a href="http://ru.voidcc.com/question/p-mmnzjdxk-ea.html" target="_blank" title="Ember.js: действия контроллера, не вызванные 'sendAction' от компонента"> Ember.js: действия контроллера, не вызванные 'sendAction' от компонента </a> </li> <li> 18. <a href="http://ru.voidcc.com/question/p-ovaogysn-bmm.html" target="_blank" title="Вызвать метод действия из метода контроллера в Ember.JS"> Вызвать метод действия из метода контроллера в Ember.JS </a> </li> <li> 19. <a href="http://ru.voidcc.com/question/p-dpjilfqd-co.html" target="_blank" title="ember.js свойства контроллера"> ember.js свойства контроллера </a> </li> <li> 20. <a href="http://ru.voidcc.com/question/p-bccevlik-td.html" target="_blank" title="ember.js: непредвиденное поведение контроллера"> ember.js: непредвиденное поведение контроллера </a> </li> <li> 21. <a href="http://ru.voidcc.com/question/p-fkniuzix-bnk.html" target="_blank" title="Ember.js Свойства маршрутизатора/контроллера"> Ember.js Свойства маршрутизатора/контроллера </a> </li> <li> 22. <a href="http://ru.voidcc.com/question/p-wzefspsv-cd.html" target="_blank" title="Два контроллера Ember.JS ArrayControllers?"> Два контроллера Ember.JS ArrayControllers? </a> </li> <li> 23. <a href="http://ru.voidcc.com/question/p-olnvvdjl-ra.html" target="_blank" title="Ember.js: Когда модель доступна для контроллера?"> Ember.js: Когда модель доступна для контроллера? </a> </li> <li> 24. <a href="http://ru.voidcc.com/question/p-ulkbyzju-dc.html" target="_blank" title="Rails 3: Отдельные javascripts для каждого действия?"> Rails 3: Отдельные javascripts для каждого действия? </a> </li> <li> 25. <a href="http://ru.voidcc.com/question/p-tmcxnwpk-boc.html" target="_blank" title="ember.js текстовое поле "на" действия"> ember.js текстовое поле "на" действия </a> </li> <li> 26. <a href="http://ru.voidcc.com/question/p-wvgoklzz-ben.html" target="_blank" title="ember.js - Ничто не обработал действия"> ember.js - Ничто не обработал действия </a> </li> <li> 27. <a href="http://ru.voidcc.com/question/p-oxgizqbj-mc.html" target="_blank" title="ember.js есть функция просмотра в замечает свойство контроллера"> ember.js есть функция просмотра в замечает свойство контроллера </a> </li> <li> 28. <a href="http://ru.voidcc.com/question/p-eaoioraq-xx.html" target="_blank" title="Действия без crud рельсов в Ember.js"> Действия без crud рельсов в Ember.js </a> </li> <li> 29. <a href="http://ru.voidcc.com/question/p-cdqnabic-bmo.html" target="_blank" title="Сохранение контекста для каждого действия"> Сохранение контекста для каждого действия </a> </li> <li> 30. <a href="http://ru.voidcc.com/question/p-czqahxfc-cq.html" target="_blank" title="Действия контроллера для укорачивания ссылок"> Действия контроллера для укорачивания ссылок </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515422009"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Последний вопрос </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://ru.voidcc.com/question/p-sekkswgv-bu.html" target="_blank" title="Повторное открытие файла в питоне дает ошибку разрешения"> Повторное открытие файла в питоне дает ошибку разрешения </a> </li> <li class="side_article_list_item"> 2. <a href="http://ru.voidcc.com/question/p-scxfvwht-gb.html" target="_blank" title="SQLite insert select result несколько раз"> SQLite insert select result несколько раз </a> </li> <li class="side_article_list_item"> 3. <a href="http://ru.voidcc.com/question/p-vyenodzd-cz.html" target="_blank" title="CouchDB 2,0: update_seq не число"> CouchDB 2,0: update_seq не число </a> </li> <li class="side_article_list_item"> 4. <a href="http://ru.voidcc.com/question/p-veeuodch-ck.html" target="_blank" title="Добавить меню в пользовательский модуль odoo 9"> Добавить меню в пользовательский модуль odoo 9 </a> </li> <li class="side_article_list_item"> 5. <a href="http://ru.voidcc.com/question/p-tgytuxci-ec.html" target="_blank" title="Скрыть запретную полосу прокрутки при переполнении"> Скрыть запретную полосу прокрутки при переполнении </a> </li> <li class="side_article_list_item"> 6. <a href="http://ru.voidcc.com/question/p-vvwvtyqm-do.html" target="_blank" title="Как проверить, установлена ​​ли служба, и запустить службу, если она установлена ​​еще при установке, и запустить службу в шеф-поваре для окон."> Как проверить, установлена ​​ли служба, и запустить службу, если она установлена ​​еще при установке, и запустить службу в шеф-поваре для окон. </a> </li> <li class="side_article_list_item"> 7. <a href="http://ru.voidcc.com/question/p-bwtptprb-u.html" target="_blank" title="Лазурный поиск бликов для фраз с двойными кавычками"> Лазурный поиск бликов для фраз с двойными кавычками </a> </li> <li class="side_article_list_item"> 8. <a href="http://ru.voidcc.com/question/p-hylyqwjo-g.html" target="_blank" title="Python - Regex от свидания как-объект"> Python - Regex от свидания как-объект </a> </li> <li class="side_article_list_item"> 9. <a href="http://ru.voidcc.com/question/p-uuoebfzu-bkr.html" target="_blank" title="dc.js: не может изменить число дочерних диаграмм композита"> dc.js: не может изменить число дочерних диаграмм композита </a> </li> <li class="side_article_list_item"> 10. <a href="http://ru.voidcc.com/question/p-sfhmozsg-bhy.html" target="_blank" title="C# UserControl в WPF"> C# UserControl в WPF </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Смежные вопросы</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://ru.voidcc.com/question/p-pglezjst-rm.html" target="_blank" title="Функция вызова для каждого контроллера"> Функция вызова для каждого контроллера </a> </li> <li class="side_article_list_item"> 2. <a href="http://ru.voidcc.com/question/p-ejcnoswm-bv.html" target="_blank" title="Вызов функции контроллера Ember.js путем автоматизации действия"> Вызов функции контроллера Ember.js путем автоматизации действия </a> </li> <li class="side_article_list_item"> 3. <a href="http://ru.voidcc.com/question/p-fywykwbq-yu.html" target="_blank" title="Весна 3: A Нет контроллера действия"> Весна 3: A Нет контроллера действия </a> </li> <li class="side_article_list_item"> 4. <a href="http://ru.voidcc.com/question/p-wtmkotyu-bbv.html" target="_blank" title="Выполнение кода до/после каждого действия контроллера"> Выполнение кода до/после каждого действия контроллера </a> </li> <li class="side_article_list_item"> 5. <a href="http://ru.voidcc.com/question/p-xbuzbwyb-bpb.html" target="_blank" title="Ошибка свойства контроллера Ember.js"> Ошибка свойства контроллера Ember.js </a> </li> <li class="side_article_list_item"> 6. <a href="http://ru.voidcc.com/question/p-crdivzaw-bgt.html" target="_blank" title="Ошибка контроллера Ember.js"> Ошибка контроллера Ember.js </a> </li> <li class="side_article_list_item"> 7. <a href="http://ru.voidcc.com/question/p-nbkxkjef-xu.html" target="_blank" title="Действия записи каждого контроллера в рельсах"> Действия записи каждого контроллера в рельсах </a> </li> <li class="side_article_list_item"> 8. <a href="http://ru.voidcc.com/question/p-blipgafu-bpp.html" target="_blank" title="cakephp - функция обратного вызова для каждого действия контроллера для установки доступных навигационных ссылок"> cakephp - функция обратного вызова для каждого действия контроллера для установки доступных навигационных ссылок </a> </li> <li class="side_article_list_item"> 9. <a href="http://ru.voidcc.com/question/p-qzqysupk-sb.html" target="_blank" title="Действия контроллера для создания дочернего представления?"> Действия контроллера для создания дочернего представления? </a> </li> <li class="side_article_list_item"> 10. <a href="http://ru.voidcc.com/question/p-spidejhu-bpo.html" target="_blank" title="Ember.js флажок для вычисляемого свойства контроллера массива"> Ember.js флажок для вычисляемого свойства контроллера массива </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://ru.voidcc.com/contact">Свяжитесь с нами</a></li> <li>© 2020 RU.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>