【发布时间】:2014-07-10 12:34:48
【问题描述】:
我正在构建一个可以在不同控制器中使用的指令,并且我希望能够将该指令绑定到我的 $scope 的特定属性。
我想做这样的事情:
<div ng-app="myapp">
<div ng-controller="myController">
<my-directive-wrapper ng-model="mymodel">
<my-directive-inner ng-repeat="item in items" />
</my-directive-wrapper>
</div>
</div>
使用此模型:
$scope.mymodel = {
name : "Transclude test",
items : [
{ title : "test1" },
{ title : "test2" },
{ title : "test3" }
]
};
所以指令myDirectiveWrapper 将$scope.mymodel 作为范围,仅此而已。然后我可以把指令放两次,每次都指向一个不同的属性。
我在这里有一个有问题的演示项目:http://jsfiddle.net/vtortola/P8JMm/3/
同样的演示在这里正常工作(不限制范围):http://jsfiddle.net/vtortola/P8JMm
问题是,如何在使用我的指令时表明我想使用我的$scope 的特定属性作为我的指令的范围。应该可以将指令绑定到同一 $scope 中的任意属性。
干杯。
【问题讨论】:
-
你看过
$transclude函数,它传递给链接函数的参数吗?它允许您传递一个对象作为转入部分的范围和一个用于 DOM 替换的函数。签出这个 SO 线程stackoverflow.com/questions/13183005/… -
@NidhishKrishnan 变量名没有被绑定,它应该在屏幕上显示“Transclude test”。该指令使用 $scope,而不是仅使用它的一部分。好主意。
-
@javaCity
my-directive-wrapper应该得到那个部分模型,而不是嵌入的部分。 -
@vtortola: 包装指令的内容总是
<my-directive-inner ng-repeat="item in items" />或者是别的什么?
标签: javascript angularjs angularjs-directive angularjs-scope