2016-06-15 4 views
0

Учитывая, что я собираюсь в следующем состоянии:Ui-маршрутизатор Создать новый контроллер в View

$stateProvider.state('applicant', { 
    url: "/admin/applicants/:name", 
    templateProvider: function($http, $stateParams) { 
    return $http({ 
    method: 'GET', 
    url: 'http://example.com/applicant', 
    params: { 
     request: $stateParams.name, 
    } 
    }).then(function successCallback(html) { 
    return html.data; 
    }); 
}, 
    controller: 'SendToCtrl' 
}); 

С точки зрения, что возвращается на $http глядя, как это:

<script> 
app.controller('ChildController', ['$scope', function($scope) { 
$scope.applicant = <?php echo $applicant ?>; 
}]); 
</script> 
    <div class="row" ng-controller="ChildController"> 
<div class="col-md-12"> 
{{applicant.State}} 
</div> 
</div> 

Я получаю a Аргумент 'ChildController' не является функцией Ошибка. Я читал, что в обычном ng-view вызов нового контроллера вроде этого не поддерживается, но не нашел ответа для ui-router. Каким будет правильный способ сделать шаблон, если мне нужен шаблон для отображения данных, которые есть только после просмотра представления?

+0

Я хотел бы начать с чего-нибудь попроще в вашем ChildController: удалить скрипты PHP и просто поставить console.log («контроллер активного»); Кроме того, где определено приложение в app.controller? Это может быть проблемой. – TSmith

+0

@TSmith Даже после очистки ChildController от своего php-контента я все равно получаю ту же ошибку. Также приложение определено ранее на странице. –

ответ

0

Поэтому я не мог сгенерировать контроллер из представления, как хотелось бы, поэтому вместо этого я использовал контроллер, сгенерированный состоянием, и привязал переменную php к представлению, а затем снова взял его обратно с указанного контроллера установки, как так:

Государственный Определение:

$stateProvider.state('applicant', { 
     url: "/admin/applicants/:name", 
     templateProvider: function($http, $stateParams) { 
     return $http({ 
     method: 'GET', 
     url: 'http://example.com/applicant', 
     params: { 
      request: $stateParams.name, 
     } 
     }).then(function successCallback(html) { 
     return html.data; 
     }); 
    }, 
     controller: 'SendToCtrl' 
    }); 

Вид:

<?php 
$applicant = str_replace('"', "'", $applicant); 
?> 
<div class="row"> 
<div id="fetchMe" class="col-md-12"> 
</div> 
</div> 
<script> 
applicant = <?php echo $applicant ?>; 
$('#fetchMe').data('key',applicant); 
</script> 

SendToCtrl:

app.controller('SendToCtrl', ["$scope", "$stateParams", "$state", function($scope, $stateParams, $state) { 

    console.log($stateParams); 
    $scope.applicant = $("#fetchMe").data('key'); 
    console.log($scope.applicant); 
}]); 

:)

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