首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >孤立作用域"=“影响父作用域

孤立作用域"=“影响父作用域
EN

Stack Overflow用户
提问于 2013-08-28 09:10:33
回答 1查看 375关注 0票数 1

在指令中,定义作用域:{isoNetwork:‘=network’},如果父作用域没有“network”属性,它将自动创建它吗?以下pic是父范围:

下面是代码示例(在jsFiddle:http://jsfiddle.net/yougen/mvYrJ/7/中相同):

代码语言:javascript
复制
var app = angular.module('app',[])

app.controller('AppCtrl', function($scope){
   $scope.leaveVoicemail = function(number, message, network){
       console.log("controller scope: ", $scope);
       window.alert("Number: " + number + " said: " + message + ", by network: " + network);
   };
});

app.directive('phone', function(){
    return {
        restrict:'E',
        scope:{
            isolatedAttributeNumber:'@number',
            isoNetwork:'=network',
            makeCall:'&'
        },
        link:function(scope){
            scope.networks = ["Verizon", "AT&T", "Sprint"];
            scope.isoNetwork = scope.networks[1];
        }
    };
});

html:

代码语言:javascript
复制
<div ng-app="app" ng-controller="AppCtrl">
        <phone number="555-1234" network="network" make-call="leaveVoicemail(number, message, network)">
            <div>
                Number:{{isolatedAttributeNumber}}  Network:<select ng-model="isoNetwork" ng-options="net for net in networks"></select>
            </div>
            Your message:<input type="text" ng-model="voiceMessage"><br>
            <button class="btn" ng-click="makeCall({number: isolatedAttributeNumber, message: voiceMessage, network: isoNetwork})">Call Home!</button>
        </phone>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-28 10:00:39

是。这就是隔离作用域中=绑定的工作方式。指令有自己的作用域,但您仍然需要一种与外部作用域(而不是“父”作用域,因为指令的作用域是孤立的)的通信方式。

=绑定提供了到外部的双向绑定。因此,当您在指令<phone nework="network" ...中绑定您的模型时,您是在告诉角在控制器范围内设置network值。当您设置link函数时,这会在您的isoNetwork函数中发生。

如果您正在寻找单向绑定,请考虑@绑定,它是一个单向字符串绑定,它不同于=绑定,后者是一个双向引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18483733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档