【发布时间】:2014-08-11 01:31:27
【问题描述】:
我有以下标记:
<div class="controller" ng-controller="mainController">
<input type="text" ng-model="value">
<div class="matches"
positions="{{client.positions | filter:value}}"
select="selectPosition(pos)">
<div class="match"
ng-repeat="match in matches"
ng-click="select({pos: match})"
ng-bind="match.name">
然后,在我的 matches 指令中,我有
app.directive('matches', function()
{
return {
scope: {
select: '&'
},
link: function(scope, element, attrs)
{
scope.matches = [];
attrs.$observe('positions', function(value)
{
scope.matches = angular.fromJson(value);
scope.$apply();
})
}
}
}
当我这样做时,我可以控制台日志scope.matches,它确实会随着我输入的值而改变。但是,最后一个 div .match 不渲染任何东西!如果我删除scope: {...} 并用scope: true 替换它,那么它会呈现结果,但我想使用& 评估在我的主控制器中执行一个函数。
我该怎么办?
【问题讨论】:
-
select在您的范围定义中缺少单引号' -
什么?什么意思?
-
应该是
scope: {select: '&'}而不是scope:{select: '&}` -
那只是一个错字,我马上修正了!我在这里输入示例时忘记关闭引用。另外,如果这是问题所在,Angular 会抛出所有令人讨厌的错误,因为这是语法问题!应用程序运行良好。