假设我有一些 html 角度:
<input type='text' ng-model='stuff' /> {{stuff}}
<button class="primary" ng-click='dothestuff()'>Do the stuff</button>
在控制器中使用以下内容:
$scope.stuff = 'arf';
$scope.dothestuff = function () {
$window.alert($scope.stuff);
};
这段代码将我输入输入并在我点击按钮时输出它。
一切正常。
但现在我想创建一个将元素包装在div中的指令(因此它显示为深灰色背景)。
我创建了一个指令,它将包含元素并用div包装它们:
testapp.directive('wrapper', function () {
return {
restrict: 'E',
replace: true,
scope: false,
transclude: true,
template: '<div style="background:#666"><div ng-transclude></div></div>'
};
});
但是当然,这个指令会为被嵌入的元素创建一个新的作用域。input元素不再引用点击按钮时将得到输出的 stuff 属性。
我可以通过将 $parent 引用为:
<input type='text' ng-model='$parent.stuff' /> {{stuff}}
但是,我宁愿不这样做。在用我的新指令包装时,我想尽可能地保持 html 不变。
如何使嵌入的元素直接引用父范围?
这是一个有问题的jsFiddle。