2017-05-29 83 views
0

這是我第一個使用angularjs的項目。我正在使用md-data-table作爲角度材料的web應用程序。我安裝了md-data-table,並開始詢問lodash。所以我安裝了lodash。那是當我得到這個[錯誤] [1]。所以我想也許角度洛達什可能會有所幫助,並且我得到另一個錯誤,說_.methods不是函數。我發現一些關於lodash的帖子不再支持某些功能。但我似乎無法找到對我的情況有用的東西。我在這裏錯過了什麼?md-data-table給出錯誤「Can not read property'length'of undefined」

代碼:

var app = angular.module('app', [ 
 
    'ngMaterial', 
 
    'ngMaterialSidemenu', 
 
    'mdPickers', 
 
    'ui.grid', 
 
    'mdDataTable']); 
 

 
app.controller('appCtrl', function ($scope, $mdDialog, $mdpTimePicker) { 
 
    $scope.items = [1, 2, 3, 4, 5]; 
 
    $scope.selectedItem = $scope.items[0]; 
 
    $scope.getSelectedText = function() { 
 
     if ($scope.selectedItem != undefined) { 
 
      return 'You chose ' + $scope.selectedItem + '.'; 
 
     } else { 
 
      return 'Choose an item.'; 
 
     } 
 
    }; 
 

 
    $scope.selectedTime = $scope.selectedDate = new Date(); 
 
    $scope.message = 'Hello'; 
 

 
    // directive 
 
    $scope.point = { 
 
     pointId: '1001' 
 
    }; 
 

 
    $scope.browser = function (ev) { 
 
     var searchByColumns = [ 
 
      'Point ID', 
 
      'Description' 
 
     ]; 
 

 
     var pointList = [{ 
 
      pointId: '1001', 
 
      description: 'point 1' 
 
     }, { 
 
      pointId: '1002', 
 
      description: 'point 2' 
 
     }, { 
 
      pointId: '1003', 
 
      description: 'point 3' 
 
     }]; 
 

 
     $mdDialog.show({ 
 
      templateUrl: '/dialogs/browser/grid-browser.html', 
 
      parent: angular.element(document.body), 
 
      targetEvent: ev, 
 
      locals: { 
 
       items: pointList, 
 
       searchByColumns: searchByColumns 
 
      }, 
 
      openFrom: '#searchBtn', 
 
      clickOutsideToClose: true, 
 
      controller: function ($scope, items, searchByColumns) { 
 
       $scope.items = items; 
 
       $scope.searchByColumns = searchByColumns; 
 
       $scope.selectedColumn = $scope.searchByColumns[0]; 
 
       $scope.getSelectedText = function() { 
 
        return $scope.selectedColumn; 
 
       }; 
 
      } 
 
     }) 
 
      // .then(function (answer) { 
 
      //  $scope.status = 'You said the information was "' + answer + '".'; 
 
      // }, function() { 
 
      //  $scope.status = 'You cancelled the dialog.'; 
 
      // }) 
 
      ; 
 
    }; 
 

 

 
    $scope.nutritionList = [{ 
 
     id: 601, 
 
     name: 'Frozen joghurt', 
 
     calories: 159, 
 
     fat: 6.0, 
 
     carbs: 24, 
 
     protein: 4.0, 
 
     sodium: 87, 
 
     calcium: '14%', 
 
     iron: '1%' 
 
    }, { 
 
     id: 602, 
 
     name: 'Ice cream sandwitch', 
 
     calories: 237, 
 
     fat: 9.0, 
 
     carbs: 37, 
 
     protein: 4.3, 
 
     sodium: 129, 
 
     calcium: '84%', 
 
     iron: '1%' 
 
    }, { 
 
     id: 603, 
 
     name: 'Eclair', 
 
     calories: 262, 
 
     fat: 16.0, 
 
     carbs: 24, 
 
     protein: 6.0, 
 
     sodium: 337, 
 
     calcium: '6%', 
 
     iron: '7%' 
 
    }]; 
 
});
<html lang="en"> 
 

 
<head> 
 
    <link rel="stylesheet" href="/node_modules/angular-material/angular-material.css"></link> 
 
    <link rel="stylesheet" href="/node_modules/angular-material-sidemenu/dist/angular-material-sidemenu.css"></link> 
 
    <link rel="stylesheet" href="/node_modules/mdPickers/dist/mdPickers.css"></link> 
 
    <link rel="stylesheet" href="/node_modules/angular-material-time-picker/dist/md-time-picker.css"></link> 
 
    <link rel="stylesheet" href="/assets/md-data-table/md-data-table.min.css"></script> 
 
    <link rel="stylesheet" href="/assets/css.css"></link> 
 
    <link rel="stylesheet" href="/assets/icons.css"></link> 
 
    <link rel="stylesheet" href="/assets/ui-grid/ui-grid.min.css"></link> 
 
    <link rel="stylesheet" href="/main.css"></link> 
 
</head> 
 

 
<body ng-app="app" ng-controller="appCtrl" ng-cloak> 
 
    <md-toolbar class="md-primary"> 
 
     <div class="md-toolbar-tools"> 
 
      <h2 class="md-flex">HTML 5</h2> 
 
     </div> 
 
    </md-toolbar> 
 

 
    <md-content layout-padding layout="row"> 
 
     <md-sidemenu locked="false"> 
 
      <md-sidemenu-group> 
 
       <md-sidemenu-content md-icon="home" md-heading="Master" md-arrow="true"> 
 
        <md-sidemenu-button ng-href="#pointMaster">Point</md-sidemenu-button> 
 
        <md-sidemenu-button href="#">Submenu 2</md-sidemenu-button> 
 
        <md-sidemenu-button href="#">Submenu 3</md-sidemenu-button> 
 
       </md-sidemenu-content> 
 

 
       <md-sidemenu-content md-heading="Menu 2" md-arrow="true"> 
 
        <md-sidemenu-button href="#">Submenu 1</md-sidemenu-button> 
 
        <md-sidemenu-button href="#">Submenu 2</md-sidemenu-button> 
 
        <md-sidemenu-button href="#">Submenu 3</md-sidemenu-button> 
 
       </md-sidemenu-content> 
 
      </md-sidemenu-group> 
 

 
      <md-sidemenu-group> 
 
       <md-divider></md-divider> 
 

 
       <md-subheader class="md-no-sticky">Caption</md-subheader> 
 
       <md-sidemenu-button href="#">Menu 4</md-sidemenu-button> 
 
      </md-sidemenu-group> 
 
     </md-sidemenu> 
 

 
     <md-tabs md-dynamic-height md-border-bottom flex="75"> 
 
      <md-tab label="Tax"> 
 
       <form flex> 
 
        <div layout="row" layout-align="start center"> 
 
         <input-button flex="50" md-margin required="false" label="Point ID" tableId="point.pointId" browse="browser()"></input-button> 
 
         <span style="width: 20px"></span> 
 
         <md-checkbox aria-label="Default" class="md-primary" layout-align="center center" flex> 
 
          Default 
 
         </md-checkbox> 
 
        </div> 
 
        <div layout="row"> 
 
         <md-input-container> 
 
          <label>Items</label> 
 
          <md-select ng-model="selectedItem" md-selected-text="getSelectedText()"> 
 
           <md-optgroup label="items"> 
 
            <md-option ng-value="item" ng-repeat="item in items">Item {{item}}</md-option> 
 
           </md-optgroup> 
 
          </md-select> 
 
         </md-input-container> 
 
         <mdp-time-picker mdp-auto-switch="true" ng-model="selectedTime" message="message"> 
 
         </mdp-time-picker> 
 
        </div> 
 
        <div layout="row" flex> 
 
         <md-button class="md-raised md-primary">Save</md-button> 
 
         <md-button class="md-raised md-warn">Delete</md-button> 
 
         <md-button class="md-raised md-primary" ng-disabled="true">Reset</md-button> 
 
        </div> 
 
        <div layout="row" flex> 
 
         <md-datepicker ng-model="selectedDate" md-placeholder="Enter date" layout-align="start center" md-open-on-focus> 
 
         </md-datepicker> 
 
        </div> 
 
       </form> 
 
      </md-tab> 
 

 
      <md-tab label="Family" layout="column" flex> 
 
       <mdt-table mdt-row="{'data': nutritionList, 'table-row-id-key': 'id', 
 
        'column-keys': ['name', 'calories', 'fat', 'carbs', 'protein', 'sodium', 'calcium', 'iron']}"> 
 
        <mdt-header-row> 
 
         <mdt-column align-rule="left">Dessert (100g serving)</mdt-column> 
 
         <mdt-column align-rule="right">Calories</mdt-column> 
 
         <mdt-column align-rule="right">Fat (g)</mdt-column> 
 
         <mdt-column align-rule="right">Carbs (g)</mdt-column> 
 
         <mdt-column align-rule="right">Protein (g)</mdt-column> 
 
         <mdt-column align-rule="right">Sodium (mg)</mdt-column> 
 
         <mdt-column align-rule="right">Calcium (%)</mdt-column> 
 
         <mdt-column align-rule="right">Iron (%)</mdt-column> 
 
        </mdt-header-row> 
 

 
        <mdt-custom-cell column-key="Dessert" ng-click="viewFats(value)"> 
 
         <span ng-repeat="name in names">{{value}}</span> 
 
        </mdt-custom-cell> 
 
       </mdt-table> 
 
      </md-tab> 
 
     </md-tabs> 
 
    </md-content> 
 
</body> 
 

 
<script src="/node_modules/angular/angular.js"></script> 
 
<script src="/node_modules/angular-animate/angular-animate.js"></script> 
 
<script src="/node_modules/angular-aria/angular-aria.js"></script> 
 
<script src="/node_modules/angular-messages/angular-messages.js"></script> 
 
<script src="/node_modules/moment/moment.js"></script> 
 
<script src="/node_modules/angular-moment/angular-moment.js"></script> 
 
<script src="/node_modules/angular-material/angular-material.js"></script> 
 
<script src="/node_modules/angular-sanitize/angular-sanitize.min.js"></script> 
 
<script src="/node_modules/angular-material-sidemenu/dist/angular-material-sidemenu.js"></script> 
 
<script src="/node_modules/mdPickers/dist/mdPickers.js"></script> 
 
<script src="/node_modules/angular-material-time-picker/dist/md-time-picker.js"></script> 
 

 
<script src="/assets/lodash/lodash.min.js"></script> 
 
<script src="/assets/md-data-table/md-data-table.min.js"></script> 
 
<script src="/assets/md-data-table/md-data-table-templates.min.js"></script> 
 

 
<script src="/assets/ui-grid/ui-grid.min.js"></script> 
 
<script src="/assets/angular-material-icons.min.js"></script> 
 

 
<script src="/app.js"></script> 
 
<script src="/directives/input-button/input-button.js"></script> 
 
<script src="/dialogs/browser/grid-browser.js"></script> 
 

 
</html>

PS://i.stack.imgur.com/WmdiC.png

+0

分享您的代碼,請 –

回答

0

@Htet昂,

的代碼片段提供你在html中沒有有效的md-data-table標籤,而在注入md-data-table時也有錯誤。爲了您的信息,您正在使用「mdDataTable」,它是爲ANGULAR(angular2)版本設計的。但是看看你的代碼表明你需要md-data-table for Angularjs(版本1.x)。

不需要loadash庫。只要cdnjs中的普通md-data-table.js會執行,並在模塊中注入相關性'md.data.table'。 請找到下面: [MD數據表AngularJs材料和Angularjs的1.x版本]

[1]: https://codepen.io/anon/pen/BjvLVJ?editors=1010