搜尋

首頁  >  問答  >  主體

angular.js - 請問在angular中定義directive後,createElement是必須的嗎?

如下程式碼所示,定義了directive layoutHeader,依照我的理解,直接在html引用就可以了。
想問下,這裡的

document.createElement('layout-header'); 有什么作用?是必须的吗?

原程式碼如下:

angular.module('app').directive('layoutHeader', function () {
  return {
    restrict: 'E',
    scope: {},
    templateUrl: 'components/layout/header.html',
    controller: 'LayoutHeaderCtrl'
  };
});

document.createElement('layout-header');
伊谢尔伦伊谢尔伦2817 天前583

全部回覆(5)我來回復

  • 滿天的星座

    滿天的星座2017-05-15 16:59:17

    這只是在做相容處理,ie8無法辨識自訂的元素,但是用js創建的反而可以辨識。

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-15 16:59:17

    document.createElement這是瀏覽器提供的js方法。可以用程式碼產生dom。
    你直接在html引用就行了,不必要非用程式碼的方式創建。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-15 16:59:17

    直接在html程式碼裡面使用就可以了。

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-15 16:59:17

    這個是範例程式碼吧?

    其實就是在 js 裡面創建一下這個 element 而已,在 html 直接寫是一樣的。

    = = 其實有點好奇這是什麼入門教材。 。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-15 16:59:17

    正如xiaohe 所說,是為了相容性而做的處理。
    參考:http://www.oschina.net/translate/angularjs-ie-compatibility?print

    如果你必需要用自定义元素标记,然后你必须采取以下步骤以确保IE8及之前版本都能用:
    
    <!doctype html>
    <html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
    <head>
      <!--[if lte IE 8]>
        <script>
          document.createElement('ng-include');
          document.createElement('ng-pluralize');
          document.createElement('ng-view');
      
          // Optionally these for CSS
          document.createElement('ng:include');
          document.createElement('ng:pluralize');
          document.createElement('ng:view');
        </script>
      <![endif]-->
    </head>
    <body>
    </body>
    
    </html>

    回覆
    0
  • 取消回覆