2016-02-29 2 views
0

Я импортирую простой HTML-файл в свой файл NodeJS. Файл HTML содержит переменную, привязанную к данным, которую я установил внутри своего контроллера. Проблема в том, что, когда NodeJS-файл импортирует HTML-файл, {{name}} не получает привязанные данные, а показания - просто "{{name}}". Однако, если я непосредственно просматриваю файл.html, отображается фактическое значение, поэтому я не уверен, что это проблема на стороне сервера. Вот мой код:NodeJS с AngularJS, требуемый HTML-файл не привязывает глобальную переменную к контроллеру

mycontrollers.js

var app = angular.module('myapp', []); 
app.value('name', {content: "BOBBY "}); 


app.controller('mycontroller', ['$scope', 'name', function($scope, name) { 

    $scope.name = name.content; 
}]); 

app.js:

var file = fs.readFileSync(__dirname + '/public/file.html').toString(); 

file.html

<html ng-app="myapp"> 
<body ng-controller="mycontroller"> 
    {{name}} 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.min.js"></script> 
    <script src="mycontrollers.js"></script> 
</body> 

Любые идеи о том, почему это происходит и как решить эту проблему?

+0

Возможно ли, что это относительный вопрос пути? Другими словами, когда вы загружаете файл html, действительно ли он запрашивает JS-файл из URL-адреса, где вы так думаете? Трудно сказать, какой URL-адрес браузер запрашивает ваш html-файл, просто взглянув на ваш пример. Проверьте вкладку сети в инструментах Chrome Dev, чтобы узнать, возвращается ли запрос для JS. – mcgraphix

+0

Нет ошибки при чтении файла, поэтому я предполагаю, что путь правильный, не уверен, что это проблема с тем, как работают глобальные переменные или как сервер обрабатывает html-файлы с переменными, привязанными к данным – user3226932

+0

, можете ли вы опубликовать остальную часть app.js, который фактически обрабатывает запрос и отправляет ответ? – mcgraphix

ответ

0

В вашем коде не должно быть места, где определено «приложение». Вы бутстрапированные вам приложение правильно и создали модуль:

var app = angular.module('myapp', []); //this string should match the value in ng-app from your HTML file 

Отъезд документов (https://docs.angularjs.org/tutorial/step_02) для примера:

var phonecatApp = angular.module('phonecatApp', []); 

    phonecatApp.controller('PhoneListCtrl', function ($scope) { 
     $scope.phones = [ 
      {'name': 'Nexus S', 
       'snippet': 'Fast just got faster with Nexus S.'}, 
      {'name': 'Motorola XOOM™ with Wi-Fi', 
       'snippet': 'The Next, Next Generation tablet.'}, 
      {'name': 'MOTOROLA XOOM™', 
       'snippet': 'The Next, Next Generation tablet.'} 
     ]; 
    }); 
+0

Извините, у меня было это уже там. Это не проблема. Как я уже упоминал, когда я просматриваю файл file.html непосредственно в своем браузере, {{name}} получает правильную привязку данных, но когда я импортирую файл из своего приложения.js, то {{name}} не получает данных – user3226932

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