如何将变量放在Angular指令之外?
如何将变量放在Angular指令之外?
Ng-table(ng-table网站)可以将$data变量从指令中放置到'user'域之外。据我所知,只要它发生在< table ng-table >标签内,我可以随意使用和滥用这个$data变量,就像这样:
< table ng-table="vm.tableParams" class="table" show-filter="true">
< tr ng-repeat="user in $data"> <---- 这个$data是从哪里来的?
< /tr>
< /table>
我想用我的指令做同样的事情,所以我做了这个:
[ JS ]
angular.module('app',[])
.controller('Controller',['$scope',function($scope){
$scope.variable = “一些随机变量”;
}])
.directive('myTable',function(){
返回{
restrict:'E',
transclude:true,
templateUrl:'my-table.html',
controller:function($scope){
$scope.foo = “你好世界”;
}
};
});
[ HTML my-table.html ]
< /code>
[ HTML index.html ]
< my-table ng-model="variable">
{{ foo }}
< /my-table>
它可以工作!工作示例,
但是当我在指令中添加scope时:
返回{
restrict:'E',
transclude:true,
scope:{
ngModel:“=”
},
templateUrl:'my-table.html',
controller:function($scope){
$scope.foo = “你好世界”;
}
}
它会破坏foo变量,所以它不再工作。
我只想让指令内部的foo变量暴露在外部,这样我就可以像上面的ng-table示例一样在index.html中使用它。如何实现这一点?
问题的原因是想要在Angular指令之外使用变量,但在代码中没有正确地将变量添加到指令的作用域(scope)属性中。
解决方法是在指令的scope属性中添加变量。在代码示例中,添加了一个名为foo的变量到scope中,以便在指令内部使用。通过将foo的值设置为与传递给指令的bar变量相等,可以在指令内部使用bar的值。
然后,在模板中使用{{ foo }}来显示变量的值。在示例中,将
放置在指令内部,以显示foo变量的值。
可以通过以下链接查看示例代码的演示:[https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview](https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview)
作者在最后提到无法让
正常工作,请检查链接:[plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview](https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview)