Ответы пользователя по тегу JavaScript
  • Angular ui.router - не срабатывает controller: '' и templateUrl: ''?

    @zagamay_ru Автор вопроса
    Нашёл решение, добавил template: '' и указывал шаблон с контроллером через views

    $stateProvider
    			.state('root', {
    				url: '/{lang:ru|en|de}',
    				abstract: true,
    				template: '<div ui-view></div>'
    			})
    			.state('root.home', {
    				url: '/',
    				views: {
    		            '': {
    		                templateUrl: '/frontend/app/template/index.php',
    		                controller: 'MainController'
    		            }
    		        }
    			})
    			.state('root.about', {
    				url: '/about/',
    				views: {
    		            '': {
    		                templateUrl: '/frontend/app/template/about.php',
    		                controller: 'AboutController'
    		            }
    		        }
    			});
    Ответ написан
    Комментировать
  • Как создать изоморфное приложение - индексируемое поисковыми роботами spa?

    @zagamay_ru
    Я пробую писать приложение на AngularJs и Yii2, роутеры должны быть идентичными что на сервере, что на клиенте.

    ангулар хавает template .php без проблем, поэтому можно сделать public папку с шаблонами.
    На сервере я проверяю только одну переменную

    function renderView( $view ) {
    		if ( strstr($_SERVER['HTTP_ACCEPT'], 'application/json') ) {
                echo json_encode( $this->Datas );
                Jbase::end();
            } else {
            	return $this->lang->getTemplate( $this->render('../../../public/frontend/app/template/' . $view, [
                    'datas' => $this->Datas
                ]));
            }
    	}


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

    <h1 class="page-header" ng-bind="datas.meta.title | t:Phrase"><ml:ru><?= $datas['meta']['title'] ?></ml></h1>


    На клиенте - ng-bind="datas.meta.title | t:Phrase"
    На сервере - <?= $datas['meta']['title'] ?>
    Ответ написан
    Комментировать