javascript - angularjs 独立作用域问题
阿神
阿神 2017-04-10 17:08:30
[JavaScript讨论组]

为什么MainController控制器可以获得内部指令的{{myProperty}值

<body ng-app="MyApp">
<p ng-controller="MainController">
    Outsid myDirective:{{myProperty}}
    <p my-directive ng-init="myProperty='wow,this is cool'">
        Inside myDirective:{{myProperty}}
    </p>
</p>
<script>
   var app=angular.module("MyApp",[]);
           app.controller("MainController",function ($scope){
           });
           app.directive("myDirective",function (){
               return {
                   replace:true,
                   restrict:"A",
                   scope:{},
                   priority:100,
                   template:"<p> Inside myDirective {{myProperty}}</p>"
               }

           })
</script>
</body>
阿神
阿神

闭关修行中......

全部回复(3)
怪我咯

你上面的指令里scope:{}这里隔绝了作用域是获取不到myProperty ,这里获取的myProperty 并不是指令里面的那个。所以下面一行并没有输出出来,之所以 Outsid myDirective:{{myProperty}} 能输出,是因为ngInit指令的原因。上面的代码中。ngInit指令会以非零的优先级运行,也就是说上面的代码中会先运行ngInit指令然后才是我们定义的指令。所以这里的myProperty 是全局$scope里的对象。而并非指令里的对象。 不知道我这样说你明白了没有。
http://jsbin.com/OxAlek/1/edit 这里有个例子你可以对比着来看就明白了。

黄舟

js原型继承 该directive继承于MainCtrl 如果该directive独立作用域中找不到那个属性 就会继续往上一级查找

伊谢尔伦

指令中scope:{} 这样写是创建了新的作用域,与外部的controller 隔离,做到复用。
MainController控制器 并没有获得 内部指令的{{myProperty}}值,并且 你指令中,并没有给{{myProperty}}赋值。。

感觉提问题者,提的很混乱,对着文档把dome 多敲两遍,就好了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号