簡體   English   中英

AngularJS-angular.js中的$ injector:modulerr模塊錯誤:36

[英]AngularJS - $injector:modulerr Module Error in angular.js:36

首先,我真的希望大家的理解和寬容。 這個問題是非常具體的,因此請不要再激進主義/不贊成投票/擱置。 我們所有人都是在這里學習新知識並分享知識,而不是侵略性。 非常感謝。

問題:我正在嘗試遵循此示例,但是Chrome中似乎沒有顯示任何內容。 該鏈接顯示了預期的結果。 我得到的只是瀏覽器中的空白頁。 誰能確切地說出原因?

    <!DOCTYPE HTML>
<html ng-app="autocompleteDemo">
    <head>
        <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
          <![endif]-->
        <title>Shanid KV | AngularJS Dynamic Form Fields</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
        <script type="text/javascript">

              angular
                  .module('autocompleteDemo', ['ngMaterial'])
                  .controller('DemoCtrl', DemoCtrl);

              function DemoCtrl ($timeout, $q, $log) {
                var self = this;
                self.simulateQuery = false;
                self.isDisabled    = false;
                // list of `state` value/display objects
                self.states        = loadAll();
                self.querySearch   = querySearch;
                self.selectedItemChange = selectedItemChange;
                self.searchTextChange   = searchTextChange;
                self.newState = newState;
                function newState(state) {
                  alert("Sorry! You'll need to create a Constituion for " + state + " first!");
                }
                // ******************************
                // Internal methods
                // ******************************
                /**
                 * Search for states... use $timeout to simulate
                 * remote dataservice call.
                 */
                function querySearch (query) {
                  var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
                      deferred;
                  if (self.simulateQuery) {
                    deferred = $q.defer();
                    $timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
                    return deferred.promise;
                  } else {
                    return results;
                  }
                }
                function searchTextChange(text) {
                  $log.info('Text changed to ' + text);
                }
                function selectedItemChange(item) {
                  $log.info('Item changed to ' + JSON.stringify(item));
                }
                /**
                 * Build `states` list of key/value pairs
                 */
                function loadAll() {
                  var allStates = 'Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware,\
                          Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana,\
                          Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana,\
                          Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina,\
                          North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina,\
                          South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia,\
                          Wisconsin, Wyoming';
                  return allStates.split(/, +/g).map( function (state) {
                    return {
                      value: state.toLowerCase(),
                      display: state
                    };
                  });
                }
                /**
                 * Create filter function for a query string
                 */
                function createFilterFor(query) {
                  var lowercaseQuery = angular.lowercase(query);
                  return function filterFn(state) {
                    return (state.value.indexOf(lowercaseQuery) === 0);
                  };
                }
              }

        </script>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>

    <body>
        <div ng-controller="DemoCtrl as ctrl" layout="column" ng-cloak>
          <md-content class="md-padding">
            <form ng-submit="$event.preventDefault()">
              <p>Use <code>md-autocomplete</code> to search for matches from local or remote data sources.</p>
              <md-autocomplete
                  ng-disabled="ctrl.isDisabled"
                  md-no-cache="ctrl.noCache"
                  md-selected-item="ctrl.selectedItem"
                  md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
                  md-search-text="ctrl.searchText"
                  md-selected-item-change="ctrl.selectedItemChange(item)"
                  md-items="item in ctrl.querySearch(ctrl.searchText)"
                  md-item-text="item.display"
                  md-min-length="0"
                  placeholder="What is your favorite US state?">
                <md-item-template>
                  <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
                </md-item-template>
                <md-not-found>
                  No states matching "{{ctrl.searchText}}" were found.
                  <a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
                </md-not-found>
              </md-autocomplete>
              <br/>
              <md-checkbox ng-model="ctrl.simulateQuery">Simulate query for results?</md-checkbox>
              <md-checkbox ng-model="ctrl.noCache">Disable caching of queries?</md-checkbox>
              <md-checkbox ng-model="ctrl.isDisabled">Disable the input?</md-checkbox>
              <p>By default, <code>md-autocomplete</code> will cache results when performing a query.  After the initial call is performed, it will use the cached results to eliminate unnecessary server requests or lookup logic. This can be disabled above.</p>
            </form>
          </md-content>
        </div>

    </body>
</html>

改變這個

.module('autocompleteDemo', ['ngMaterial'])

對此

.module('myapp', ['ngMaterial'])

您指定的名稱必須與您在ng-app中輸入的名稱相匹配(在您的情況下為myApp)

似乎您錯過了添加ngMaterial.js的引用,您需要在angular.min.js文件文件引用之后添加該引用。 從此cdn中獲取它,並添加CSS以使樣式生效

您使用角形材質,但不導入它。 我根據棱角材料入門頁面更新了您的依賴關系,並創建了一個插件來驗證這一點。

<!DOCTYPE html>
<html ng-app="myapp">
    <head>
        <!--[if IE]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
          <![endif]-->
        <title>Shanid KV | AngularJS Dynamic Form Fields</title>
        <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>

  <!-- Angular Material Library -->
  <script src="https://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.js"></script>

        <script type="text/javascript">

              angular
                  .module('myapp', ['ngMaterial'])
                  .controller('DemoCtrl', DemoCtrl);

              function DemoCtrl ($timeout, $q, $log) {
                var self = this;
                self.simulateQuery = false;
                self.isDisabled    = false;
                // list of `state` value/display objects
                self.states        = loadAll();
                self.querySearch   = querySearch;
                self.selectedItemChange = selectedItemChange;
                self.searchTextChange   = searchTextChange;
                self.newState = newState;
                function newState(state) {
                  alert("Sorry! You'll need to create a Constituion for " + state + " first!");
                }
                // ******************************
                // Internal methods
                // ******************************
                /**
                 * Search for states... use $timeout to simulate
                 * remote dataservice call.
                 */
                function querySearch (query) {
                  var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
                      deferred;
                  if (self.simulateQuery) {
                    deferred = $q.defer();
                    $timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
                    return deferred.promise;
                  } else {
                    return results;
                  }
                }
                function searchTextChange(text) {
                  $log.info('Text changed to ' + text);
                }
                function selectedItemChange(item) {
                  $log.info('Item changed to ' + JSON.stringify(item));
                }
                /**
                 * Build `states` list of key/value pairs
                 */
                function loadAll() {
                  var allStates = 'Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware,\
                          Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana,\
                          Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana,\
                          Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina,\
                          North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina,\
                          South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia,\
                          Wisconsin, Wyoming';
                  return allStates.split(/, +/g).map( function (state) {
                    return {
                      value: state.toLowerCase(),
                      display: state
                    };
                  });
                }
                /**
                 * Create filter function for a query string
                 */
                function createFilterFor(query) {
                  var lowercaseQuery = angular.lowercase(query);
                  return function filterFn(state) {
                    return (state.value.indexOf(lowercaseQuery) === 0);
                  };
                }
              }

        </script>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>

    <body>
        <div ng-controller="DemoCtrl as ctrl" layout="column" ng-cloak>
          <md-content class="md-padding">
            <form ng-submit="$event.preventDefault()">
              <p>Use <code>md-autocomplete</code> to search for matches from local or remote data sources.</p>
              <md-autocomplete
                  ng-disabled="ctrl.isDisabled"
                  md-no-cache="ctrl.noCache"
                  md-selected-item="ctrl.selectedItem"
                  md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
                  md-search-text="ctrl.searchText"
                  md-selected-item-change="ctrl.selectedItemChange(item)"
                  md-items="item in ctrl.querySearch(ctrl.searchText)"
                  md-item-text="item.display"
                  md-min-length="0"
                  placeholder="What is your favorite US state?">
                <md-item-template>
                  <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
                </md-item-template>
                <md-not-found>
                  No states matching "{{ctrl.searchText}}" were found.
                  <a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
                </md-not-found>
              </md-autocomplete>
              <br/>
              <md-checkbox ng-model="ctrl.simulateQuery">Simulate query for results?</md-checkbox>
              <md-checkbox ng-model="ctrl.noCache">Disable caching of queries?</md-checkbox>
              <md-checkbox ng-model="ctrl.isDisabled">Disable the input?</md-checkbox>
              <p>By default, <code>md-autocomplete</code> will cache results when performing a query.  After the initial call is performed, it will use the cached results to eliminate unnecessary server requests or lookup logic. This can be disabled above.</p>
            </form>
          </md-content>
        </div>

    </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM