Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS将属性中的URL传递到指令的隔离范围-意外标记';:';_Javascript_Angularjs_Binding_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Javascript AngularJS将属性中的URL传递到指令的隔离范围-意外标记';:';

Javascript AngularJS将属性中的URL传递到指令的隔离范围-意外标记';:';,javascript,angularjs,binding,angularjs-directive,angularjs-scope,Javascript,Angularjs,Binding,Angularjs Directive,Angularjs Scope,我是AngularJS的新手,几天前才开始使用它,所以如果问题本身不正确,请原谅我 我遇到的问题是,我想通过属性将URL参数传递给指令的隔离范围,但在http://中的:部分,它给了我一个错误,说Syntax error:Token':'是表达式[http://第5列的意外标记 指令的HTML部分(我在其中“调用”它)如下所示: <myDirective datasource="http://url"></myDirective> scope: { dataSo

我是AngularJS的新手,几天前才开始使用它,所以如果问题本身不正确,请原谅我

我遇到的问题是,我想通过属性将URL参数传递给指令的隔离范围,但在
http://
中的
部分,它给了我一个错误,说
Syntax error:Token':'是表达式[http://
第5列的意外标记

指令的HTML部分(我在其中“调用”它)如下所示:

<myDirective datasource="http://url"></myDirective>
scope: {
    dataSource: '=datasource'
}
如果该属性的值只包含简单字符,则该属性有效。如何解决此问题


谢谢。

不要在指令中使用“=”而使用@,因为您传递的是普通字符串

scope: {
    dataSource: '@datasource'
}

如果要进行双向数据绑定
'='
,则必须使用范围变量对其进行绑定或传递带引号的字符串:

<myDirective datasource="'http://url'"></myDirective>

在您的案例中,angular正在尝试评估
数据源
属性的值。因为您提到了
=
,即变量的双向绑定

如果将URL包装在
中,
(单引号)将解决您的问题。因为提到的值将直接绑定到指令隔离范围变量

标记

<my-directive datasource="'http://url'"></my-directive>

要定义隔离作用域,只需在作用域定义中输入“@”,并在指令中使用atribute名称即可

.directive('ggThumbnail', function()
{
    return {
        restrict: 'E',
        scope: {
            thumbnailSrc: '@',
            thumbnailWidth: '@',
            thumbnailHeight: '@'
        },
        link: function(scope, element, attrs, ctrl)
        {
            ctrl.init(element);

            attrs.$observe('thumbnailSrc', function()
            {
                if (attrs.thumbnailSrc)
                {
                    ctrl.prepareImage();
                }
            });
        }
    };
});

Angular尝试将您的值用作变量名

From:“对象哈希用于在父作用域和隔离作用域之间设置双向绑定(使用“=”)或单向绑定(使用“@”)。还有“&”用于绑定到父作用域表达式。”

你应使用:

scope: {
    dataSource: '@datasource'
}

将url封装在单引号中会起作用
你能分享一下如何创建这个方向吗当绑定到变量时应该使用
=
,对于文本字符串应该使用
@
。其他任何东西都会让人困惑。因为我出于其他原因需要双向绑定,所以我接受了另一个答案。但是你所说的非常有用,谢谢你因此。:)由于其他原因,我需要双向绑定,这就是我需要的答案。@MartinFejes很高兴能帮助您。谢谢。:)如果在链接中我有来自作用域的变量呢?比如
,那将是
你能分享一下如何创建这个指令吗