2015-02-07 3 views
0

Так у меня есть индексной страницы:AngularJS функция управления не называется

<!DOCTYPE html> 
<html ng-app="application" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <link href="Content/bootstrap.min.css" rel="stylesheet" /> 
    <script src="Scripts/angular.min.js"></script> 
    <script src="Scripts/angular-route.min.js"></script> 
    <script src="app/app.js"></script> 
</head> 
<body> 

    <!-- Place where the page will be rendered at --> 
    <div ng-view> 
    </div> 

</body> 
</html> 

Приложение выглядит следующим образом:

var application = angular.module('application', ["ngRoute"]); 

application.config(["$routeProvider", "$locationProvider", 
    function ($routeProvider, $locationProvider) { 
     $routeProvider 
      .when("/home", { 
       templateUrl: "app/ListContactsForm/lcTemplate.html", 
       controller: "HomeController" 
      }) 
      .otherwise({ 
       redirectTo: "/home" 
      }); 
     //$locationProvider.html5Mode(true); 
    }]); 



application.controller("HomeController", 
    ["$scope", "$location", "DataService", 
    function ($scope, $location, DataService) { 

     alert("home hit!"); 

    }]); 

lcTemplate.html:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>aaaa</title> 
</head> 
<body> 
    I'm here!! 
</body> 
</html> 

Проблема заключается в том что lcTemplate отображается, я получаю «Я здесь!» сообщение, но функция HomeController никогда не вызывается. Почему это так?

+1

любая ошибка в консоли .. ?? – squiroid

+0

Я решил, что ошибка в установке! – omegasbk

+1

@omegasbk Просто ответьте на свой вопрос, он может помочь кому-то в будущем;) –

ответ

1

Проблема заключалась в инъекции DataService который не было (я удалил сервис).

Error: [$injector:unpr] http://errors.angularjs.org/1.3.12/$injector/unpr?p0=DataServiceProvider%20%3C-%20DataService%20%3C-%20HomeController 

Изменения, которые нужно сделать все были в коде приложения:

var application = angular.module('application', ["ngRoute"]); 

application.config(["$routeProvider", "$locationProvider", 
    function ($routeProvider, $locationProvider) { 
     $routeProvider 
      .when("/home", { 
       templateUrl: "app/ListContactsForm/lcTemplate.html", 
       controller: "HomeController" 
      }) 
      .otherwise({ 
       redirectTo: "/home" 
      }); 
     //$locationProvider.html5Mode(true); 
    }]); 



application.controller("HomeController", 
    ["$scope", "$location", 
    function ($scope, $location) { 

     alert("home hit!"); 

    }]); 
+0

Кстати, если вы указали ошибку на вопрос, должно быть легко обнаружить ошибку. –

+0

Да, я до сих пор не использую консоль в браузере, так как я довольно новичок в этом. :) – omegasbk

1

Вы должны удалить полное определение HTML из шаблона, так как представление оказывается внутри

<div ng-view> 
    </div> 

lcTemplate.html: должно быть, как

<div>I'm here!!</div> 
+0

Это не вызвало ошибку, но это правда! Спасибо – omegasbk

+0

Отлично, чтобы помочь вам :-) – squiroid

0

Вы не объявить "DataService". например: у меня есть свои услуги в model_services.js

var services = angular.module('ModelServices'); 

services.factory('DataService', ['$resource', function($resource){ 
var DataService = $resource('/api/data/:id', {id: "@id" }); 

return DataService; 
}]); 

Этот метод предназначен для вызова любых потребляющих услуг. '/ api/data /: id' - ваш путь доступа к API.

После этого вы должны добавить модуль в приложении конфигурации, для этого примера «ModelServices»

var application = angular.module('application', ["ngRoute", "ModelServices"]); 

Теперь вы можете позвонить «DataService» от контроллера

application.controller("HomeController", 
    ["$scope", "$location", "DataService", 
    function ($scope, $location, DataService) { 

     console.log("home hit!"); 

}]); 

У меня есть не идея, если вы можете вызывать «предупреждение» от контроллера, но я уверен, что вы можете использовать console.log вместо этого.

Как вы говорите @omegasbk «Проблема заключалась в том, чтобы вводить DataService, которого не было (я удалил сервис)». если вы не объявили свой модуль, который содержит ваш объект «DataService» в вашем приложении, вы не сможете использовать его в своем контроллере.

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