2015-06-30 3 views
0

У меня есть ng-контроллер на странице _Layout, как это.angularjs ng-controller внутри ng-controller

<div ng-controller="LayoutController"> 
left content.... 
    @RenderBody 
right content.. 

И с помощью углового модуля в макете с помощью AJAX (что часть работы)

<script type="text/javascript"> 
    var module_ = angular.module("myapp", []); 
    var controller_ = module_.controller("layoutController", function ($scope) { 
     $.ajax({ 
      type: "POST", 
      url: "Home/GetMenu", 
      success: function (result) { 
       $.each(result, function (i, ix) { 
        result[i].ID = i + 1; 
       }); 
       $scope.TopCharactersModel = result; 
       $scope.$apply(); 
      }, 
      complete: function() { 

      } 
     }) 

Тогда я хочу использовать другой Ng-контроллер внутри Index.html который производный от этой страницы макета , Javascript-код не работает на этой стороне, а хром-отладчик показывает эту ошибку ВНИМАНИЕ: Пытался нагружать углы более одного раза.

<div ng-controller="IndexController"> 
    <div class="panel-group" id="accordion" ng-repeat="arr_ in newsArr"> 
</div> 
</div> 



<script> 
     var module = angular.module("myapp", []); 
     var myController1 = module_.controller("IndexController", function ($scope) { 

      $.ajax({ 
       url: "Home/GetNews", 
       type: "POST", 
       success: function (result) { 
        $scope.newsArr = result; 
        // $scope.$digest(); 
        $scope.$apply() 
       }, 
       complete: function() { 
       } 
      }); 
     }); 

    </script> 
+3

Предполагая, что вы находитесь в одном приложении, и вы не создаете какое-то гибридное приложение с несколькими спа-салонами ... вы на самом деле обновляете модуль: myapp. Если вам нужна ссылка на модуль myapp, удалите [] из 'angular.module (« myapp », []);' – skubski

ответ

0

Предполагая, что вы находитесь в том же приложении, и вы не создаете своего рода гибридное приложение с множественным санаториями ... вы на самом деле повторного объявления модуля: MyApp. Если вам нужна ссылка на модуль myapp, удалите [] с angular.module("myapp", []);

Создание против Retrieval Помните, что с помощью angular.module ('MyModule', []) создаст модуль MyModule и перезаписать существующий модуль с именем MyModule. Используйте метод angular.module ('myModule') для извлечения существующего модуля .

Вставлено из module documentation.

+0

спасибо за совет, я исправлю его. но это не решение моей проблемы. –

+0

Вы использовали 'ng-app =" myApp "несколько раз? – skubski

+0

nop, его только определенная на странице макета, на самом деле я не забочусь об этой ошибке «Пробовал загружать углы более одного раза». , Мне просто нужно вызвать ajax-скрипт с индексной страницы для загрузки данных в ng-repeat –

1

Для второго контроллера попробуйте это.

<script> 
var module = angular.module("myapp", []); 
var myController1 = module.controller("IndexController", function ($scope) { 
$.ajax({ 
      url: "Home/GetNews", 
      type: "POST", 
      success: function (result) { 
       $scope.newsArr = result; 
       // $scope.$digest(); 
       $scope.$apply() 
      }, 
      complete: function() { 
      } 
     }); 
    }); 
</script> 
+0

Я ничего не изменил –

+0

Во втором контроллере имя переменной для углового модуля не совпадает с именем, которое вы использовали для определения контроллера. Попробуйте это исправить. – ishakya

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