directive指令

directive

 directive('mySelect',['$timeout',function($timeout){


        return{

            restrict:'EA',
            scope:{

                inputData:'=',//双向绑定数据
                listData:'=',
                
            },
            replace:true,
            template:'<div class="contain-select" >\
                        <div class="input-text">\
                            <input ng-model="inputData" placeholder="全部" class="input-left" ng-click="showList()" readOnly ng-blur="showList()"/>\
                            <i  class="position-right" ng-class="{\'fa fa-angle-left\':left(),\'fa fa-angle-down\':down()}"></i>\
                        </div>\
                          <ul class="ul-data" ng-show="isOpen"  >\
                             <li ng-repeat="data in listData track by $index" ng-mousedown="chioce(data)" class="list-data" ng-class="{active:select(data)}">{{data}}</li>\
                         </ul>\
                      </div>',
link:function(scope,element,attr){},
}
View Code

出现错误 angular.js:11707 Error: [$compile:tplrt] Template for directive 'mySelect' must have exactly one root element.错误

原因:template指向的模板,外层只能有一层元素包裹。如<div></div>,如果为<div></div><div></div>会出现上述错误。

 

当出现tranclude:属性的时候,注意包含的模板的作用域是采用原来指令编译时候所在的作用域。千万注意作用域问题。

posted on 2016-06-23 11:10  逸菜鸟  阅读(76)  评论(0编辑  收藏  举报