javascript - angularjs 独立作用域问题

查看:137
本文介绍了javascript - angularjs 独立作用域问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

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

           })
</script>
</body>

解决方案

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

这篇关于javascript - angularjs 独立作用域问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆