2015-02-05 5 views
0

Я работаю с Angular JS и Yii2. В одном из моих PHP контроллеров мне нужно передать массив данных из внутреннего интерфейса к переднему концу, поэтому я JSON кодирующее мой PHP массив и установив вар в представлении следующим образом:Лучший способ передать JSON от контроллера PHP до контроллера AngularJS?

$script = "var projects = '".json_encode($projects)."';"; 
$this->view->registerJs($script, View::POS_END); 

Тогда в моем угловом контроллере Я получаю данные JSON следующим образом:

app.controller('ProjectsController', ['$scope', function($scope, args){ 
    $scope.projects;  

    $scope.init = function(){ 
     $scope.projects = angular.fromJson(projects); 
    }; 

    $scope.init(); 
}]); 

Мой вопрос в том, что это хорошая форма? Есть ли правильный/неправильный способ обработки данных, подобных этому при загрузке страницы с помощью Angular?

Приветствия

Ash

+0

'$ script =" var projects = ".json_encode ($ projects)."; "; ... $ scope.projects = projects;' – Musa

+0

Я больше об использовании метода init для настройки данных в моем контроллер такой. Musa ваше исправление к коду не работает - вы не можете использовать повторяемость, если json не импортирован должным образом. –

+0

, если вы не используете fromJson, тогда вы просто устанавливаете $ scope.projects как строку, а не массив –

ответ

1

Я думаю, что вам нужно сделать что-то вроде этого

app.controller('ProjectsController', ['$scope', '$window', function($scope, $window){ 
    $scope.projects = angular.fromJson($window.projects); 

Или использовать метод функции инициализации, если вы хотите, важная часть использует сервис $ окна.

+0

Нет, это не сработает. Однако я могу исключить метод init и просто использовать один слой в контроллере, который является более элегантным. $ scope.projects = angular.fromJson (проекты); –

+0

Возможно, он предполагает, что вы объявили переменные «проекты» в глобальной области? Я. window.projects был объявлен где-то на странице, например var projects = "{json}" ;. Но в этом случае я не вижу причины разбирать JSON - вы можете просто объявить переменную как объект (массив или и т. Д.), –

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