Javascript AngularJS将属性中的URL传递到指令的隔离范围-意外标记';:';
我是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
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很高兴能帮助您。谢谢。:)如果在链接中我有来自作用域的变量呢?比如
,那将是
你能分享一下如何创建这个指令吗