angular @S范围内的“@”和“=”是什么意思?

时间:2014-10-27 10:07:54

标签: javascript angularjs

可以在https://github.com/darylrowland/angucomplete/blob/master/angucomplete.js

查看代码

摘录如下:

angular.module('angucomplete', [] )
    .directive('angucomplete', function ($parse, $http, $sce, $timeout) {
    return {
        restrict: 'EA',
        scope: {
            "id": "@id",
            "placeholder": "@placeholder",
            "selectedObject": "=selectedobject",
            "url": "@url",
            "dataField": "@datafield",
            "titleField": "@titlefield",
            "descriptionField": "@descriptionfield",
            "imageField": "@imagefield",
            "imageUri": "@imageuri",
            "inputClass": "@inputclass",
            "userPause": "@pause",
            "localData": "=localdata",
            "searchFields": "@searchfields",
            "minLengthUser": "@minlength",
            "matchClass": "@matchclass"
        },

我无法理解的是神奇的@=字符串。它是AngularJS中的特殊字符吗?(我不确定因为搜索google中的标志很难...)如果是这样,它的用法是什么?

3 个答案:

答案 0 :(得分:2)

在angularjs中创建指令时,这两个特殊字符经常被@=使用。

@在angularjs指令

中的用法
app.directive("directive1",function(){
return{
    restrict:"E",
    template:"<p></p>",
    scope:{
      text:"@text"
    }
};
});

<directive1 text="Usage of @ in angularjs directive"></directive1> 

此处对父范围文本的任何更改都将更改本地范围文本,但不会改变其他方式。

=在angularjs指令

中的用法
app.directive("directive1",function(){
return{
    restrict:"E",
    template:"<p></p>",
    scope:{
      text:"=text"
    }
};
});

<directive1 text="Usage of = in angularjs directive"></directive1> 

此处对父范围文本的任何更改都将更改本地范围文本,以及相反的方式。

答案 1 :(得分:1)

Dan Wahlin撰写了一篇关于Angular Isolated范围系统的精彩文章,你可以在这里阅读:http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-2-isolate-scope

答案 2 :(得分:1)

这些确实是AngularJS中的特殊字符。

官方文档很难找到它是在$compile - 服务文档下定义的: https://docs.angularjs.org/api/ng/service/ $编译#-scope -