【发布时间】:2015-08-24 07:13:28
【问题描述】:
我正在学习Angular.js的指令模块以及如何创建自己的指令。
我正在阅读一本书“由 Josh Kurz 编写的掌握 AngularJS 指令”。
这里我看了一个例子,但不太明白。
这是下面的代码,
<!DOCTYPE html>
<html lang="en" ng-app="MyApp">
<head>
<title>Recipe 02 example 01</title>
<script type="text/javascript" src="D:\Rahul Shivsharan\JavaScript-Framework\AngularJS\angular.js"></script>
<script type="text/javascript" src="D:\Rahul Shivsharan\JavaScript-Framework\jQuery\jquery-1.11.1.js"></script>
<script type="text/javascript" src="D:\Rahul Shivsharan\JavaScript-Framework\BootstrapCSS\bootstrap-3.2.0-dist\js\bootstrap.js"></script>
<link rel="stylesheet" href="D:\Rahul Shivsharan\JavaScript-Framework\BootstrapCSS\bootstrap-3.2.0-dist\css\bootstrap.css"></link>
<link rel="stylesheet" href="D:\Rahul Shivsharan\JavaScript-Framework\BootstrapCSS\bootstrap-3.2.0-dist\css\bootstrap-theme.css"></link>
<script type="text/javaScript">
angular.module("MyApp",[]);
(function(){
angular.module("MyApp").controller("myCtrl",myCtrl);
angular.module("MyApp").directive("bbString",bbString);
angular.module("MyApp").directive("bbTwoString",bbTwoString);
angular.module("MyApp").directive("bbExpression",bbExpression);
function myCtrl($scope){
$scope.actorName = "Jim Carry";
};
function bbString(){
var obj = {
scope : {
name : "@abbraKaDabraa"
},
template : "<input ng-model='name' />"
}
return obj;
};
function bbTwoString(){
var obj = {
scope : {
name : "=theName"
},
template : "<input ng-model='name' />"
}
return obj;
};
function bbExpression(){
var obj = {
scope : { term : "&" },
template : "<input ng-model='term' />",
link : function(scope,element,attrs){
scope.term = scope.term();
}
}
return obj;
}
})();
</script>
</head>
<body ng-controller="myCtrl">
<div class="container">
<div class="well">
<div bb-string abbra-ka-dabraa="{{actorName}}"></div>
<p><b>{{actorName}}</b></p>
<div bb-expression term="newTerm = actorName + ' Some Extra content'"></div>
<br/>
<div bb-two-string the-name="actorName"></div>
</div>
</div>
</body>
从上面的例子可以看出,
我创建了三个指令“bb-string”、“bb-two-string”和“bb-expression”。
读完这本书,我的理解是所有的指令都有定义范围。
我从定义范围这个术语的理解是“指令从其父指令获得的范围”。
所以无论我理解正确,还是指令“bb-string”具有隔离范围,而指令“bb-two-string”具有定义范围。 ?
如果所有指令都使用“定义范围”,那么这些范围是否从控制器“myCtrl”范围继承?
最后的任务,
指令“bb-expression”有一个代码,
scope.term = scope.term();
“scope.term()”是什么意思,这个term function是从哪里来的?
这是现场示例的链接。
【问题讨论】:
-
我不知道“定义范围”是什么意思。 angular中有根作用域、隔离作用域和嵌套作用域。
标签: angularjs angularjs-directive