我尝试根据$ scope值将我的指令放入不同的模板中。我在ng-repeat中使用指令,我向她发送数据对象和其他直接输入
指令:
/**
* angular-streamlist directive
*/
angular.module('ngStreamlist', []).directive('webcams', function() {
return {
restrict: 'A',
scope: {
stream_webcam: '=webcam',
stream_margin: '@margin'
},
templateUrl: function(elem, attr) {
if (scope.stream_webcam.webcam_domain) {
if (scope.stream_webcam.webcam_domain == 'youtube') {
return 'templates/youtube.html';
}
if (scope.stream_webcam.webcam_domain == 'twitcam') {
return 'templates/twitcam.html';
}
}
}
};
});
html:
<div data-ng-repeat="webcam in datas.webcams">
<div data-webcams data-webcam="webcam" data-margin="no"></div>
</div>
和数据如下: { “id”:1, “webcam_domain”:“youtube”,...等 }
我有这个错误:
ReferenceError: scope is not defined
at Object.templateUrl (streamlist.js:13)
我不明白,范围是IS定义的,不是吗?
答案 0 :(得分:0)
问题是scope
不是templateUrl函数可用的局部变量。它是同一对象上的一个字段。只要调用的角度代码没有将this.scope
设置为另一个对象,您就应该可以使用this
访问它。
答案 1 :(得分:0)
您需要将范围添加到templateUrl
功能中,如下所示:
templateUrl: function(scope, elem, attr)
否则您的功能无法访问它,因此您的错误消息。