angularJS 中$attrs方法使用指南
angularJS 中$attrs方法使用指南
发布时间:2016-12-30 来源:查字典编辑
摘要:这里给大家分享的是一个angularJS中$attrs方法的使用示例:复制代码代码如下:无标题文档a_directive原始内容原始内容原始...

这里给大家分享的是一个angularJS 中$attrs方法的使用示例:

复制代码 代码如下:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>

无标题文档

</title>

<script src="http://localhost:81/js/jquery.js">

</script>

<script src="http://localhost:81/js/angular.min.js">

</script>

</head>

<body ng-app="Demo">

<div a>

a_directive

</div>

<div ng-controller="TestCtrl">

<h1 t>

原始内容

</h1>

<h2 t2>

原始内容

</h2>

<h3 t3="hiphop" title2="{{name}}">

原始内容

</h3>

<div compile></div>

<div>

<test a="{{ a }}" b c="xxx"></test>

<button ng-click="a=a+1">

修改

</button>

</div>

<te a="1" ys-a="123" ng-click="show(1)">这里</te>

</div>

<script>

var app = angular.module('Demo', [], angular.noop);

app.controller("TestCtrl",

function($scope) {

$scope.name = "qihao";

});

app.directive("t",

function() {

return {

controller : function($scope){$scope.name = "qq"},

template : "<div>test:implementToParent{{name}}</div>",

replace : true,

scope : true //作用域是继承的,默认就是继承的

}

});

app.directive("t2",

function() {

return {

controller : function($scope){$scope.name = "nono"},

template : "<div>test:implementToParent{{name}}</div>",

replace : true,

restrict : "AE"

}

});

app.directive("t3",

function() {

return {

template : "<div>test:implementToParent_titleIs:{{title}}<br>title2Is:{{title2}}</div>",

replace : true,

restrict : "AE",

scope : {

title : "@t3",

title2 : "@title2"

}

}

});

app.directive('a',

function() {

var func = function() {

console.log('compile');

return function() {

console.log('link');

}

}

var controller = function($scope, $element, $attrs, $transclude) {

//$transclude :是指令标签的复制体

console.log('controller');

console.log($scope);

console.log($transclude);

//$transclude接受两个参数,你可以对这个克隆的元素进行操作,

var node = $transclude(function(clone_element, scope) {

$element.append(clone_element);

$element.append("<span>spanTag___</span>");

console.log(clone_element);

console.log('--');

console.log(scope);

});

console.log(node);

}

return {

compile: func,

template: "<h1 ng-transclude></h1>",

controller: controller,

transclude: true,

restrict: 'AE'

}

});

app.directive('compile',function() {

var func = function() {

console.log('a compile');

return {

pre: function() {

console.log('a link pre')

},

post: function() {

console.log('a link post')

},

}

}

return {

restrict : "AE",

compile : func

}

})

app.directive('test', function(){

var func = function($element, $attrs){

console.log($attrs);

$attrs.$observe('a', function(new_v){

console.log(new_v);

});

}

return {compile: func,

restrict: 'E'}

});

app.controller('TestCtrl', function($scope){

$scope.a = 123;

});

app.directive('te', function(){

var func = function($scope,$element, $attrs,$ctrl){

console.log($ctrl)

//$attrs.$set. 给这个属性设置b,值为ooo,就是这样

$attrs.$set('b', 'ooo');

$attrs.$set('a-b', '11');

//这个还有点不懂啊 //第二个参数值

$attrs.$set('c-d', '11', true, 'c_d');

console.log($attrs);

}

return {

compile: function(){

return func

},

restrict: 'E'

}

});

app.controller('TestCtrl', function($scope){

$scope.show = function(v){console.log(v);}

});

</script>

</body>

</html>

本文内容就到这里了,希望大家能对angularJS 中$attrs的使用有了新的认识,希望大家能够喜欢本文。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类