2016-11-04 6 views
1

Это дополнение к моему вопросу: AngularJS Doesn't Resolve An Array of ObjectsApp не загружается Когда контроллер находится в отдельном файле

Как я уже отмечал в моем окончательном редактировании:

я решил это путем размещения контроллера в том же файле, где определено приложение - app.js. При размещении в отдельной папке он не работает. Я не знаю, почему в этот момент.

но почему это? Я пробовал несколько раз, и приложение не загружается, когда контроллер находится в отдельном файле - js/controller.js. И я проверил путь, это правильно.

Вот приложение:

Это мой HTML:

<body data-ng-app="App"> 
* 
* 
* 

<div ng-controller="Ctrl"> 
    <p>{{obj.desc}}</p> 
</div> 

* 
* 
* 
</body> 

app.js

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

controller.js

app.controller('Ctrl', function($scope) { 
    $scope.obj = [ 
      { 
       intro: "intromessage", 
       desc: "desc" 
      }, 
      { 
       intro: "intromessage2", 
       desc: "desc" 
      } 
     ]; 
    }); 

ответ

1

Предполагая, что controller.js является правильно загружена. Вы должны определить var app в новом файле:

var app = angular.module('App'); //Continue your app module 
app.controller('Ctrl', function($scope) { 
    $scope.obj = [ 
      { 
       intro: "intromessage", 
       desc: "desc" 
      }, 
      { 
       intro: "intromessage2", 
       desc: "desc" 
      } 
     ]; 
    }); 
+0

на самом деле его не требуется – Sajeetharan

+0

, если он работает в другой области он – dbarthel

+0

@dbarthel что вы подразумеваете под разными объем? – Sajeetharan

1

вы можете решить эту проблему легко. Вы должны сделать небольшую модификацию в своих js-файлах.

app.js

var app = angular.module('App', []); 
app.controller('Ctrl',homeController); 

controller.js

var homeController = function($scope) { 
$scope.obj = [ 
     { 
      intro: "intromessage", 
      desc: "desc" 
     }, 
     { 
      intro: "intromessage2", 
      desc: "desc" 
     } 
    ]; 
    } 

Это будет работать для вас. Убедитесь, что в вашей странице макета включить JS управления до приложения расслоения плотной

Примера:

<script src="~\controller.js"></script> <!--first--> 
<script src="~\App.js"></script> <!--second--> 
+0

Это тоже хорошо! Иногда вам нужно идти так, иногда вы этого не делаете. Не могли бы вы объяснить? – tholo

+1

Все это связано с объемом переменной. Если вы определяете –

+1

Извините за неполный комментарий, все о сфере. если u определит ** переменную app ** в app.js и вызовет ее в ** контроллере **, переменная app не определена до этого момента. Так что он не будет регистрироваться.Если вы хотите, чтобы ваш исходный код сам работал, то вставляйте текст ** app.js ** сначала ** Контроллер **, даже если это будет работать :) попробуйте один раз –