摘要:自定義指令中有很多內置指令,一般都是以開頭的比如等等。本文介紹的自定義指令的用法。該參數的意思是替換指令的內容,更改上面的例子。將屬性綁定到父控制器的域中學習概念多指令中的參數中增加了的值和的點擊函數。
自定義指令
angularjs中有很多內置指令,一般都是以ng開頭的;比如:ng-app,ng-click,ng-repeat等等。本文介紹angularjs的自定義指令的用法。
指令的定義首先在html標簽處設置ng-app的屬性值,然后在js文件中就可以調用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的最簡單的參數配置,下面是一個詳細的參數配置列表
app.directive("myDirective", function factory(injectables) { return { restrict: string,//指令的使用方式,包括標簽,屬性,類,注釋 priority: number,//指令執行的優先級 template: string,//指令使用的模板,用HTML字符串的形式表示 templateUrl: string,//從指定的url地址加載模板 replace: bool,//是否用模板替換當前元素,若為false,則append在當前元素上 transclude: bool,//是否將當前元素的內容轉移到模板中 scope: bool or object,//指定指令的作用域 controller: function controllerConstructor($scope, $element, $attrs, $transclude){...},//定義與其他指令進行交互的接口函數 require: string,//指定需要依賴的其他指令 link: function postLink(scope, iElement, iAttrs) {...},//以編程的方式操作DOM,包括添加監聽器等 compile: function compile(tElement, tAttrs, transclude){ return: { pre: function preLink(scope, iElement, iAttrs, controller){...}, post: function postLink(scope, iElement, iAttrs, controller){...} } } }; });
下面介紹幾個常用的參數
restrict四個值"A","E","C","M",分別代碼屬性,標簽,類,注釋,如下:
restrict:"A" restrict:"E"restrict:"C" restrict:"M"
只測試了A和E的值,感興趣的朋友可以測試一下其他。
template 和 templateUrl這兩個參數只需要設置一個就行。
transclude該參數的意思是替換指令的內容,更改上面的例子。html更改部分
hello angular
js更改部分
app.directive("myDirective",function(){ return { restrict:"A", require:true, transclude:true,//增加transclude參數的設置 template:"scope",//將指令的內容替換到span標簽下 }; });
false 默認值。使用父作用域作為自己的作用域 true 新建一個作用域,該作用域繼承父作用域 javascript對象
當scope為javascript對象時,鍵值對的形式定義。直接看例子吧!
html:
directive {{text}}
js:
var app = angular.module("directive",[]); app.directive("myDirective",function(){ return { restrict:"A", template:"link{{mytitle}}", require:true, replace:true, transclude:true, //將etitle屬性綁定到父控制器的scope域中 scope:{ mytitle:"=etitle" }, } }); app.controller("directive",function($scope){ $scope.title = "學習"; $scope.text = "angular js概念多"; });
link的值是一個function,一般用在在dom上綁定動作的。請看下面實現的一個折疊面板的例子。
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 學習"; $scope.text = "angular js概念多"; });
expander指令中的link參數中增加了showText的值和toggleText的點擊函數。
最后,再看一個多個折疊面板的例子
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源碼地址
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79163.html
摘要:自定義指令中有很多內置指令,一般都是以開頭的比如等等。本文介紹的自定義指令的用法。該參數的意思是替換指令的內容,更改上面的例子。將屬性綁定到父控制器的域中學習概念多指令中的參數中增加了的值和的點擊函數。 自定義指令 angularjs中有很多內置指令,一般都是以ng開頭的;比如:ng-app,ng-click,ng-repeat等等。本文介紹angularjs的自定義指令的用法。 指令...
摘要:點擊我啊當屬性為空時,點擊的時候頁面不會刷新了,我們再也不需要這樣寫了點擊我啊一般和指令結合使用點擊我啊你點擊我了一般和標簽結合使用。使用了就就可以避免出現這種問題。如果鏈接中有表達式,就使用代替 a 點擊我啊 當href屬性為空時,點擊的時候頁面不會刷新了,我們再也不需要這樣寫了 點擊我啊 一般和ng-click指令結合使用 #html 點擊我啊 #scr...
摘要:引言指令可以說是的核心,而其開發也是比較困難的,本文主要介紹指令的一些參數和的綁定策略。指令執行的優先級,用于多個指令同時作用于同一個元素時。改變父會影響指令,而改變指令不會影響父。在父和指令之間建立雙向綁定。 引言 指令(Directive)可以說是 AngularJS 的核心,而其開發也是比較困難的,本文主要介紹指令的一些參數和scope的綁定策略。 參數 從 AngularJS ...
摘要:新增的日期選擇器。類型必填必填最小長度最大長度正則匹配正則匹配更新觸發即使沒有使用校驗屬性,只要數據不符合格式,就會被更新成。 input[text] input一般和ngModel結合使用來實現雙向綁定,同時angular提供了很多表單校驗的指令 required 必填 ngRequired 必填(ngRequired可以控制是否是必填校驗) ngMinlength 最小長度...
摘要:適用標簽所有觸發條件單擊適用標簽所有觸發條件雙擊適用標簽觸發條件失去焦點適用標簽觸發條件獲取焦點適用標簽觸發條件更新輸入框的內容改變并不代表的值更新。如果按一個鍵很久才松開,發生的事件為。 ngClick 適用標簽:所有觸發條件:單擊 #html click me click me #script angular.module(learnModule, []) ...
閱讀 3257·2023-04-26 01:31
閱讀 1898·2023-04-25 22:08
閱讀 3444·2021-09-01 11:42
閱讀 2828·2019-08-30 12:58
閱讀 2170·2019-08-29 18:31
閱讀 2435·2019-08-29 17:18
閱讀 3068·2019-08-29 13:01
閱讀 2555·2019-08-28 18:22