2015-01-14 3 views
2

Только что начал с углового и попытался выполнить эту работу.AngularJs - использовать внешний контроллер.js

Я хотел бы показать это имя в <p></p>, но он показывает {{name}}.

ASPX:

<html ng-app="myApp"> 
<head runat="server"> 
    <script src="Assets/Vendor/angularjs-v1.2.28.js"></script> 
    <script src="App/app.js"></script> 
    <script src="App/controllers.js"></script> 

</head> 
<body ng-controller="myCtrl"> 
<p>{{ name }}</p> 
</body> 
</html> 

app.js:

var app = angular.module('myApp','myCtrl'); 

controllers.js:

var controller = {}; 

controller.myCtrl = function ($scope) { 
    $scope.name = "abcd"; 
} 

EDIT: Я изменил порядок загрузки файлов сценариев и обновил этот запрос. Это ошибка, которую я вижу в консоли - Неиспользуемая ошибка: [$ injector: modulerr]

+1

Вы нажимаете F12 (открытая консоль разработчика), чтобы увидеть, что происходит не так? Вы, вероятно, получаете '' приложение 'не определено'. Я бы предпочел инвертировать скрипты 'controller.js' и' app.js'. – Highmastdon

+1

Как говорит @hightmastdon. Youre, включая скрипты 'app' и' controller' в неправильном порядке – hammus

ответ

3

Немногие вещи здесь:

1 - myCtrl не зависимый модуль. Таким образом, вам не нужно при определении myApp модуля:

angular.module('myApp',[]); 

2 - Заказ скриптов, как описано @Highmastdon.

3 - При определении контроллера, вы можете использовать модуль myApp:

angular.module('myApp').controller('myCtrl', function($scope) { 

    $scope.name = 'abcd'; 
}); 
+0

Вы можете добавить '['$ scope', function ($ scope) {}]' для работы с минификсацией – Highmastdon

+0

Я предполагаю step3 должен идти в app.js.right? Что делать, если я хочу поместить его в controllers.js. Как это будет? – Qwerty

+0

@Qwerty Нет, переменная 'app' будет добавлена ​​в глобальную область. Таким образом, он должен быть доступен до тех пор, пока файл 'controller.js' загружается после' app.js'. –

4

Вы неправильно разместили порядок скриптов. Скорее поставили app.js перед controller.js. Теперь вы получаете сообщение об ошибке: var app is not defined.

[Дополнение]
Кроме того, вы пытаетесь ввести myCtrl, который не является объектом. Поэтому изменение var controller до var myCtrl, вероятно, сработает.

Лучше бы использовать что-то, как описано здесь: https://docs.angularjs.org/guide/controller

app.controller('myCtrl', ['$scope', function($scope) { 
    $scope.name = "abcd"; 
}]); 
+0

Спасибо, что сработали – Qwerty

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