2016-02-20 4 views
0

Я проверил самые основные угловые. Я использую nodejs, angularjs и html.ng-контроллер не работает даже через него, называется правильно

Вот мои файлы. https://github.com/internial/test. node_modules не размещено b/c было слишком большим.

в localhost: 8080. Это результат, который я получаю.

{{1 + 64}} 
{{main.msg}} 

{{this.msg}} 

{{msg}} 

{{mainController.msg}} 

Угловой просто не работает. Тем не менее, он работает, когда у меня нет ng-controller и ng-app (инициализировано ничем). Но я не могу назвать контроллер. Я могу сделать только базовые {{1 + 64 }}.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

+1

У вас есть 'ng-controller =" mainController как основной "и' app.controller ("mailController", ... ', то есть' main' и 'mail'. Исправьте опечатку и она должна работать – dotnetom

+0

it все еще не работает – Internial

+0

Вы пытались использовать $ scope вместо этого в главном контроллере? – Mhand7

ответ

0

Вам также необходимо назначить ваш контроллер правильному модулю.

Так что ваш index.html говорит:

ng-app="firstController" 

И ваш модуль, на самом деле, называется это.

var app = angular.module("firstController", []); 

(Примечание стороны: я бы переименовать что firstApp, может быть, так как это название всего приложения).

Теперь, как упоминалось в комментариях, переименуйте mailController в mainController, и он должен работать. Посмотрите на пример:

https://jsbin.com/caqohasoce/edit?html,js,output

Редактировать: Просто заметил, что вы используете экспресс, чтобы служить этому. И ваш единственный маршрут, который подвергается только дает index.html - значит ngapp.js не достигает браузер:

app.get('/', function(req, res) { 
    res.sendFile(path.join(__dirname + '/index.html')); 
}); 

Вот два пути решения этого. Вы можете использовать express.static вместо того, чтобы служить файлы непосредственно:

app.use(express.static()); 

В качестве альтернативы, вы даже не нужно выражать вообще здесь. Вы можете служить эти файлы с реальным сервером HTTP, как Apache или Nginx, или вы можете использовать что-то вроде модуля http-server узла:

npm install http-server 
node_modules/.bin/http-server . 

Это будет служить ваши файлы вместо экспресс.

Здесь есть что делать дальше, например, перемещать все в нечто вроде/общедоступного каталога или тому подобное, отделять серверные модули от клиента, но это не относится к вашей проблеме.

+0

Я изменил mailController на mainController, но он все еще не работает. Wtf – Internial

+0

Вы видели версию jsbin? Что делать, если вы прямо скопируете эти значения? – Zlatko

+0

Нашел вашу проблему, обновив ответ. – Zlatko

0

Я рекомендую вам сделать следующее.

В вашем ngapp.JS файл переписать его следующим образом:

var app = angular.module("firstController", []); 
     app.controller("mainController", function($scope) { 
      $scope.msg = "Hello from NG controller"; 
     }); 

В вашем переписывания разметки для этого:

<!DOCTYPE html> 
<html ng-app="firstController"> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.8/angular-route.min.js"></script> 
    <script src="ngapp.js"></script> 
</head> 

<body ng-controller="mainController"> 
{{1 + 64}} 
<h3>{{msg}}</h3> 
</body> 
</html> 

Совет: Вместо ng-app="firstController" переименовать его в ng-app="firstApp", так как это приложение.

Проверьте правописание (app.controller("mailController") и в вашей разметке у вас есть ng-controller(mainController)).