成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Angularjs學(xué)習(xí)筆記指令

LeexMuller / 1385人閱讀

摘要:自定義指令中有很多內(nèi)置指令,一般都是以開頭的比如等等。本文介紹的自定義指令的用法。該參數(shù)的意思是替換指令的內(nèi)容,更改上面的例子。將屬性綁定到父控制器的域中學(xué)習(xí)概念多指令中的參數(shù)中增加了的值和的點擊函數(shù)。

自定義指令

angularjs中有很多內(nèi)置指令,一般都是以ng開頭的;比如:ng-app,ng-click,ng-repeat等等。本文介紹angularjs的自定義指令的用法。

指令的定義

首先在html標(biāo)簽處設(shè)置ng-app的屬性值,然后在js文件中就可以調(diào)用angular.module得到一個module,最后就可以用module.directive定義一個指令。代碼如下:

html文件




    
    directive
    
    



    

js文件

var app = angular.module("directive",[]);
app.directive("myDirective",function(){
   return {
       restrict:"A",
       require:true,
       template:"hello angular",
   };
});

這個例子只使用了directive的最簡單的參數(shù)配置,下面是一個詳細(xì)的參數(shù)配置列表

app.directive("myDirective", function factory(injectables) {
    return {
        restrict: string,//指令的使用方式,包括標(biāo)簽,屬性,類,注釋
        priority: number,//指令執(zhí)行的優(yōu)先級
        template: string,//指令使用的模板,用HTML字符串的形式表示
        templateUrl: string,//從指定的url地址加載模板
        replace: bool,//是否用模板替換當(dāng)前元素,若為false,則append在當(dāng)前元素上
        transclude: bool,//是否將當(dāng)前元素的內(nèi)容轉(zhuǎn)移到模板中
        scope: bool or object,//指定指令的作用域
        controller: function controllerConstructor($scope, $element, $attrs, $transclude){...},//定義與其他指令進行交互的接口函數(shù)
        require: string,//指定需要依賴的其他指令
        link: function postLink(scope, iElement, iAttrs) {...},//以編程的方式操作DOM,包括添加監(jiān)聽器等
        compile: function compile(tElement, tAttrs, transclude){
            return: {
                pre: function preLink(scope, iElement, iAttrs, controller){...},
                post: function postLink(scope, iElement, iAttrs, controller){...}
            }
        }
    };
});

下面介紹幾個常用的參數(shù)

restrict

四個值"A","E","C","M",分別代碼屬性,標(biāo)簽,類,注釋,如下:

restrict:"A"   
restrict:"E" restrict:"C"
restrict:"M"

只測試了A和E的值,感興趣的朋友可以測試一下其他。

template 和 templateUrl

這兩個參數(shù)只需要設(shè)置一個就行。

transclude

該參數(shù)的意思是替換指令的內(nèi)容,更改上面的例子。html更改部分

hello angular

js更改部分

 app.directive("myDirective",function(){
    return {
        restrict:"A",
        require:true,
        transclude:true,//增加transclude參數(shù)的設(shè)置
        template:"
",//將指令的內(nèi)容替換到span標(biāo)簽下 }; });
scope
false               默認(rèn)值。使用父作用域作為自己的作用域
true                新建一個作用域,該作用域繼承父作用域
javascript對象       

當(dāng)scope為javascript對象時,鍵值對的形式定義。直接看例子吧!
html:




    
    directive
    
    


    
{{text}}

js:

var app = angular.module("directive",[]);
app.directive("myDirective",function(){
    return {
        restrict:"A",
        template:"
{{mytitle}}
", require:true, replace:true, transclude:true, //將etitle屬性綁定到父控制器的scope域中 scope:{ mytitle:"=etitle" }, } }); app.controller("directive",function($scope){ $scope.title = "學(xué)習(xí)"; $scope.text = "angular js概念多"; });
link

link的值是一個function,一般用在在dom上綁定動作的。請看下面實現(xiàn)的一個折疊面板的例子。




    
    directive
    
    


    
{{text}}
var app = angular.module("directive",[]);
app.directive("expander",function(){
    return {
        restrict:"E",
        template:"
{{mytitle}}
", require:true, replace:true, transclude:true, //將etitle屬性綁定到父控制器的scope域中 scope:{ mytitle:"=etitle" }, link: function(scope,element,attr,accordionCtrl){ scope.showText = false; scope.toggleText = function(){ scope.showText = ! scope.showText; } } } }); app.controller("directive",function($scope){ $scope.title = "angular 學(xué)習(xí)"; $scope.text = "angular js概念多"; });

expander指令中的link參數(shù)中增加了showText的值和toggleText的點擊函數(shù)。

最后,再看一個多個折疊面板的例子




    
    directive
    
    


    
{{expander.text}}

ng-repeat便利expanders的所有元素

var app = angular.module("directive",[]);
app.directive("expander",function(){
    return {
        restrict:"E",
        template:"
{{mytitle}}
", require:"^?accordion", replace:true, transclude:true, //將etitle屬性綁定到父控制器的scope域中 scope:{ mytitle:"=etitle" }, link: function(scope,element,attr,accordionCtrl){ scope.showText = false; accordionCtrl.addExpander(scope); scope.toggleText = function(){ scope.showText = ! scope.showText; accordionCtrl.getOpened(scope); } } } }); app.controller("directive",function($scope){ $scope.expanders = [ {title:"angular",text:"angular js概念多"}, {title:"react",text:"react + reduce + ui路由機制"} ]; }); app.directive("accordion",function(){ return { restrict:"E", template:"
", replace:true, transclude:true, controller:function(){ var expanders = []; this.getOpened = function(selectExpander){ angular.forEach(expanders,function(e){ if (selectExpander != e){ e.showText = false; } }); } this.addExpander = function(e){ expanders.push(e); } } } });

demo源碼地址

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79163.html

相關(guān)文章

  • Angularjs學(xué)習(xí)筆記指令

    摘要:自定義指令中有很多內(nèi)置指令,一般都是以開頭的比如等等。本文介紹的自定義指令的用法。該參數(shù)的意思是替換指令的內(nèi)容,更改上面的例子。將屬性綁定到父控制器的域中學(xué)習(xí)概念多指令中的參數(shù)中增加了的值和的點擊函數(shù)。 自定義指令 angularjs中有很多內(nèi)置指令,一般都是以ng開頭的;比如:ng-app,ng-click,ng-repeat等等。本文介紹angularjs的自定義指令的用法。 指令...

    Cristic 評論0 收藏0
  • angularjs學(xué)習(xí)筆記指令a,ngHref

    摘要:點擊我啊當(dāng)屬性為空時,點擊的時候頁面不會刷新了,我們再也不需要這樣寫了點擊我啊一般和指令結(jié)合使用點擊我啊你點擊我了一般和標(biāo)簽結(jié)合使用。使用了就就可以避免出現(xiàn)這種問題。如果鏈接中有表達式,就使用代替 a 點擊我啊 當(dāng)href屬性為空時,點擊的時候頁面不會刷新了,我們再也不需要這樣寫了 點擊我啊 一般和ng-click指令結(jié)合使用 #html 點擊我啊 #scr...

    Channe 評論0 收藏0
  • AngularJS學(xué)習(xí)筆記(2) --- 指令參數(shù)和scope綁定策略

    摘要:引言指令可以說是的核心,而其開發(fā)也是比較困難的,本文主要介紹指令的一些參數(shù)和的綁定策略。指令執(zhí)行的優(yōu)先級,用于多個指令同時作用于同一個元素時。改變父會影響指令,而改變指令不會影響父。在父和指令之間建立雙向綁定。 引言 指令(Directive)可以說是 AngularJS 的核心,而其開發(fā)也是比較困難的,本文主要介紹指令的一些參數(shù)和scope的綁定策略。 參數(shù) 從 AngularJS ...

    AndroidTraveler 評論0 收藏0
  • angularjs學(xué)習(xí)筆記指令input

    摘要:新增的日期選擇器。類型必填必填最小長度最大長度正則匹配正則匹配更新觸發(fā)即使沒有使用校驗屬性,只要數(shù)據(jù)不符合格式,就會被更新成。 input[text] input一般和ngModel結(jié)合使用來實現(xiàn)雙向綁定,同時angular提供了很多表單校驗的指令 required 必填 ngRequired 必填(ngRequired可以控制是否是必填校驗) ngMinlength 最小長度...

    princekin 評論0 收藏0
  • angularjs學(xué)習(xí)筆記—事件指令

    摘要:適用標(biāo)簽所有觸發(fā)條件單擊適用標(biāo)簽所有觸發(fā)條件雙擊適用標(biāo)簽觸發(fā)條件失去焦點適用標(biāo)簽觸發(fā)條件獲取焦點適用標(biāo)簽觸發(fā)條件更新輸入框的內(nèi)容改變并不代表的值更新。如果按一個鍵很久才松開,發(fā)生的事件為。 ngClick 適用標(biāo)簽:所有觸發(fā)條件:單擊 #html click me click me #script angular.module(learnModule, []) ...

    Lemon_95 評論0 收藏0

發(fā)表評論

0條評論

LeexMuller

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<