我是AngularJS的新手,几天前刚开始使用它,如果问题本身不正确,请原谅我。
我遇到的问题是我想通过属性将URL参数传递给我的指令的隔离范围,但在:
的{{1}}部分它给我一个错误,说http://
...
指令的HTML部分(我称之为“它”)是这样的:
Syntax Error: Token ':' is an unexpected token at column 5 of the expression [http://
我将(?)绑定到这样的隔离范围:
<myDirective datasource="http://url"></myDirective>
如果属性的值仅包含简单字符,则可以使用。我该如何解决这个问题?
感谢。
答案 0 :(得分:6)
不要使用&#39; =&#39;在指令中使用@,因为你正在传递普通字符串。
scope: {
dataSource: '@datasource'
}
答案 1 :(得分:6)
在您的情况下,angular正在尝试评估datasource
属性的值。因为你提到=
,即变量的双向绑定。
如果您在'
(单引号)中包装URL将解决您的问题。因为所提到的值将直接绑定到指令隔离范围变量。
<强>标记强>
<my-directive datasource="'http://url'"></my-directive>
答案 2 :(得分:2)
如果您想要双向数据绑定'='
,则必须将其与范围变量绑定或传递带引号的字符串:
<myDirective datasource="'http://url'"></myDirective>
答案 3 :(得分:1)
Angular尝试将您的值用作变量名。
来自here:&#34;对象哈希用于设置双向绑定(使用&#39; =&#39;)或单向绑定(使用&#39; @ &#39;)父范围和隔离范围之间。还有&#39;&amp;&#39;绑定到父范围表达式。&#34;
您应该使用:
scope: {
dataSource: '@datasource'
}
答案 4 :(得分:0)
要定义隔离范围,只需输入&#39; @&#39;进入范围定义并在指令中使用属性名称。
.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();
}
});
}
};
});