我无法理解控制器和指令之间的范围链接。
我正在尝试做的事情(这应该有助于我学到很多东西)是在我的指令中将$scope.systems
绑定到data
。
所以我设置了一个简单的指令调用:
<combobox data="systems"></combobox>
我也试过绑定变量,但对我来说没有意义。
<combobox data="{{systems}}"></combobox>
然后我就这样创建了我的驱动程序
.directive('combobox', function ($timeout) {
return {
restrict: 'E',
replace: true,
templateUrl: '/angular/directives/combobox.php',
link: function (scope, element, attrs) {
console.log(attrs.data);
$timeout(function () {
console.log(scope.systems);
console.log($scope[attrs.data]);
}, 1000);
}
}
});
我考虑过将一个范围参数添加到指令返回
scope: {
'systems': '='
}
或者
scope: {
'systems': '=data'
}
我已经能够设置简单的指令,其中值绑定到指令范围,并且它们已经工作。现在我正在尝试创建一个可重用的指令,我可以告诉它从控制器范围中使用哪些数据,而我只是卡住了。
答案 0 :(得分:1)
这应该有效。虽然我不确定为什么你的模板是一个php文件...
<combobox data="foo"></combobox>
<combobox data="bar"></combobox>
app.directive('combobox', function ($timeout) {
return {
restrict: 'E',
replace: true,
scope: {
//this will set $scope.systems
//with the value gotten from evaluating what is in
//the data attribute
'systems': '=data'
},
templateUrl: '/angular/directives/combobox.php',
link: function (scope, element, attrs) {
console.log(scope.systems);
}
}
});
顺便说一句,不要使用replace
。 Angular团队表示,它可能会很快消失,因为它造成了太多问题,而且无论如何都不是必要的。