AngularJS将属性中的URL传递到指令的隔离范围-意外的令牌':'
AngularJS pass URL in attribute to isolated scope of directive - unexpected token ':'
我是AngularJS的新手,几天前刚刚开始使用它,所以如果问题本身不正确,请原谅我。
我遇到的问题是,我想通过属性将URL参数传递给指令的隔离范围,但在http://
的:
部分,它给了我一个错误,说Syntax Error: Token ':' is an unexpected token at column 5 of the expression [http://
。。。
指令的HTML部分(我"调用"它的地方)是这样的:
<myDirective datasource="http://url"></myDirective>
我把它绑定到像这样的孤立范围:
scope: {
dataSource: '=datasource'
}
如果该属性的值仅包含简单字符,则它有效。我该如何解决这个问题?
谢谢。
在您的情况下,angular正在尝试评估datasource
属性的值。因为您提到了=
,即变量的双向绑定。
如果您将URL封装在'
(单引号)中,将解决您的问题。因为上面提到的值将直接绑定到指令隔离的范围变量。
标记
<my-directive datasource="'http://url'"></my-directive>
不要在指令中使用'=',而是使用@,因为您传递的是普通字符串。
scope: {
dataSource: '@datasource'
}
如果想要双向数据绑定'='
,则必须将其与范围变量绑定或传递带引号的字符串:
<myDirective datasource="'http://url'"></myDirective>
从这里开始:"对象哈希用于在父作用域和隔离作用域之间设置双向绑定(使用'=')或单向绑定(使用[@')。还有'&'用于绑定到父作用域表达式。"
您应该使用:
scope: {
dataSource: '@datasource'
}
要定义隔离作用域,只需将'@'放入作用域定义中,并在指令中使用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();
}
});
}
};
});
相关文章:
- 正在全局范围中查找JavaScript函数
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 如何通过数组更新角度子范围
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- Javascript未捕获语法错误意外的标识符错误
- 未捕获的语法错误:意外的标记{
- HTML范围:动态设置值属性
- "未捕获的语法错误:意外的标记}"
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 动态加载angularjs并生成控制器和范围
- 未捕获的SyntaxError:具有服务器变量的意外标识符
- AngularJS将属性中的URL传递到指令的隔离范围-意外的令牌':'
- AngularJS 意外共享范围
- 范围输入值出现意外结果