0

Я пытаюсь разбить контроллеры angularjs на файлы, но не всегда.Не удалось загрузить контроллер в мой модуль angularjs

Структура каталогов:

--public-- 
     --js/controller/resturant.js 
     --js/master.js 
     --index.php 

Код для master.js

angular.module("rsw",['rsw.controller']); 

Код для resturant.js

angular.module('rsw.controller').controller('resturant', ['$scope', '$http', function($scope, $http){ 
    $scope.data="Test" 
}]); 

Код для index.php

-- 
<div ng-app="rsw"> 
    <span ng-controller="resturant"> 
    {{ data }} 
    </span> 
</div> 
-- 

EDIT: Я включил в свой index.php только «master.js», мне нужно также импортировать «resturant.js»?

+0

Вы создали модуль «rsw» и создали свой контроллер в модуле «rsw.controller» другого модуля. Вы добавили модуль 'rsw.controller' в качестве зависимости в модуле 'rsw'? –

+0

Да, все еще не работает –

ответ

2

Необходимо использовать правильный вызов module definition. То есть angular.module(name)извлекает a модуль и angular.module(name, [requires])создает один.

angular.module('rsw.controller', []) 
.controller('resturant', ['$scope', '$http', function($scope, $http){ 
    $scope.data="Test" 
}]); 

После создания модуля, необходимо затем сделать его зависимость вашего приложения:

angular.module("rsw",['rsw.controller']); 

Исправлен код:

angular.module("rsw", ['rsw.controller']); 
 
angular.module('rsw.controller', []) 
 
    .controller('resturant', ['$scope', '$http', 
 
    function($scope, $http) { 
 
     $scope.data = "Test" 
 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="rsw"> 
 
    <span ng-controller="resturant"> 
 
    {{ data }} 
 
    </span> 
 
</div>

+0

Я получаю эту ошибку сейчас: 'Uncaught Error: [$ injector: modulerr]' –

+0

@JaskaranSinghPuri Если бы у меня была небольшая опечатка в моем ответе, забыли '' '' 'rsw.controller '', [] '. Возможно, это причина? – tcooc

+0

Нет, я исправил это, все еще ошибка сохраняется! –

0

Я думаю, что вы неправильно настроили ваш контроллер. Попробуйте ввести вместо этого:

angular.module('rsw').controller('resturant', ['$scope', '$http', function($scope, $http){ 
    $scope.data="Test" 
}]); 
+0

Это ошибка: 'Ошибка: [ng: areq]' –

+0

О, да, еще одна ошибка, попробуйте вот так: 'angular.module ('rsw'). Controller ('resturant', function ($ scope, $ http) { $ scope.data = "Test" }); ' –

0

что-то, как это должно работать ...

структура файла:

--public 
    --js 
    --controllers 
     --resturant.js 
    --app.js 
    --appRoutes.js 
--views 
    --index.php 

// resturant.js 
    angular.module('rswCtrl', []).controller('RswController', [$scope, function($scope) { 

}]); 

// appRoutes.js 

    angular.module('appRoutes', []).config(['$routeProvider','$locationProvider', function($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/', { 
     templateUrl: 'views/index.php', 
     controller: 'RswController' 
    }); 
    }]); 

// app.js 
angular.module('myApp', ['appRoutes', 'rswCtrl']); 

, а затем не забудьте включить пути ко всем этим файлам в вашем index.php. Надеюсь, я чего-то не упустил.

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