我正在学习AngularJS中的指令,我遇到了这段代码:
var app = angular.module('app', []);
//creating custom directive syntax
app.directive("myDir", function () {
return {
restrict: "E", //define directive type like E = element, A = attribute, C =
class, M = comment
scope: { //create a new child scope or an isolate scope
title: '@' //@ reads the attribute value,
//= provides two-way bindi
我的问题是:
根据代码,属性“scope”显然用于创建子范围或隔离范围。如果我们想要将该指令的范围隔离,我们如何区分?如果我只想要一个范围孩子而不是孤立我怎么办?
隔离意味着我们创建的隔离范围无法访问父范围中的变量,对吧?
默认情况下,父作用域无法访问子项中的变量,但是如果父项不是孤立的,子项可以访问父变量,是吗?
最后一个问题,如果我们定义一个属性'controller'来为这个指令指定一个控制器,那么这个指令默认具有控制器的范围?
谢谢!
答案 0 :(得分:1)
设置scope: true
以获取未隔离的新子范围。
scope
如果设置为
true
,则会为此指令创建新范围。 如果同一元素上的多个指令仅请求新范围 创建了一个新范围。新范围规则不适用于 模板的根,因为模板的根总是得到一个新的 范围。如果设置为
{}
(对象哈希),则会创建一个新的“隔离”范围。该 'isolate'范围与正常范围不同,因为它没有 原型继承自父范围。这很有用 创建可重复使用的组件,不应该意外地读取或 修改父范围内的数据。