Модули контроллера и фильтра в AngularJS

#angularjs

#angularjs

Вопрос:

Здравствуйте, я начал изучать AngrularJS от strach, и у меня возникла проблема с двумя базовыми модулями и basic filter:

 <body ng-app="myapp">

<div ng-controller="MyController" >

{{1 1}} 

<div>Filtered: {{myData.text | myFilter:2:5}}</div>
</div>
<script>
angular.module("myapp", [])
.controller("MyController", function($scope) {
$scope.myData = {};
$scope.myData.text = "balsalaskdlas";
});

angular.module("myapp", []).filter('myFilter', function() {

    return function(stringValue, startIndex, endIndex) {
        return stringValue.substring(parseInt(startIndex), parseInt(endIndex));
    };
});

</script>

</body>
  

Но этот код выдает мне ошибку: «Аргумент ‘MyController’ не является функцией, не определен»

И в HTML-браузере в виде страницы, которую я видел:

 {{1 1}}
Filtered: {{myData.text | myFilter:2:5}}
  

Что не так с этим кодом?

Ответ №1:

 angular.module("myapp", [])
  

Приведенная выше строка определяет новый модуль с именем «myapp» и перезаписывает ранее определенный модуль. Если вы хотите получить ссылку на модуль и добавить к нему фильтр, используйте

 angular.module("myapp").filter(...)
  

Комментарии:

1. Спасибо, это была проблема

Ответ №2:

Вы объявляете модуль дважды, и вам не хватает окончания в ng-controller-div

 <!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="'   document.location   '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x"     src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
  </head>

  <body ng-app="myapp">
    <div ng-controller="MyController" >
      {{1 1}} 
      <div>Filtered: {{myData.text | myFilter:2:5}}</div>
    </div>

    <script>
    var app = angular.module("myapp", []);
    app.controller("MyController", function($scope) {
      $scope.myData = {};
      $scope.myData.text = "balsalaskdlas";
    });

    app.filter('myFilter', function() {
        return function(stringValue, startIndex, endIndex) {
          return stringValue.substring(parseInt(startIndex), parseInt(endIndex));
        };
    });

    </script>

  </body>
</html>