ng-repeat 中的指令范围问题
Directive scope issue inside ng-repeat
即使经过一周的深入试验,我也无法解决以下问题。
1) Html 个容器
在 E 指令中得到一个带有 ng-repeat 的 Html 容器,这是一个简化的例子。
<div ng-repeat="block in blocks">
<my-directive
selected="selected[block.name]"
block-name="block.name"
>
</my-directive>
</div>
2) 指令代码
module.directive('myDirective', myDirective);
function myDirective() {
return {
restrict: 'E',
templateUrl : 'myDirectiveTemplate.tpl.html',
scope: {
selected: '='
blockName: '='
},
link: function ($scope) {
}
}
};
3) 使用的指令Html
<div>
<div>
<input type="text" ng-model="selected.denomination" myFunc="onCompletedListClick($parent.selected, $parent.blockName)"
class="form-control"/>
</div>
</div>
<button
ng-click="onCompletedListClick($parent.selected, $parent.blockName)">
ReSearch</button>
问题出在指令上,当使用按钮时,范围始终包含正确的数据,在这种情况下,当按下 Enter 键时会调用 myFunc。
我在某些情况下假设有四个区块,当对第一个进行研究时没问题,但是对第二个进行研究时它使用的是第一个的范围......但只有在按下键时,从按钮开始的研究似乎总是可以的。
我的问题是:
1)如何解决这个问题,我对此很着迷
2)为什么会这样?
找到问题。
真正的问题是缺少按钮类型,打印在表单内的字段具有 "default" 按回车键提交的行为。没有类型的按钮的默认值是 "submit",所以它试图提交表单,并且启动了第一个没有类型的按钮,我修复了按钮并在我的指令上放置了一个 ng-keydown 函数以正确处理 Enter密钥提交。
即使经过一周的深入试验,我也无法解决以下问题。
1) Html 个容器 在 E 指令中得到一个带有 ng-repeat 的 Html 容器,这是一个简化的例子。
<div ng-repeat="block in blocks">
<my-directive
selected="selected[block.name]"
block-name="block.name"
>
</my-directive>
</div>
2) 指令代码
module.directive('myDirective', myDirective);
function myDirective() {
return {
restrict: 'E',
templateUrl : 'myDirectiveTemplate.tpl.html',
scope: {
selected: '='
blockName: '='
},
link: function ($scope) {
}
}
};
3) 使用的指令Html
<div>
<div>
<input type="text" ng-model="selected.denomination" myFunc="onCompletedListClick($parent.selected, $parent.blockName)"
class="form-control"/>
</div>
</div>
<button
ng-click="onCompletedListClick($parent.selected, $parent.blockName)">
ReSearch</button>
问题出在指令上,当使用按钮时,范围始终包含正确的数据,在这种情况下,当按下 Enter 键时会调用 myFunc。
我在某些情况下假设有四个区块,当对第一个进行研究时没问题,但是对第二个进行研究时它使用的是第一个的范围......但只有在按下键时,从按钮开始的研究似乎总是可以的。
我的问题是: 1)如何解决这个问题,我对此很着迷 2)为什么会这样?
找到问题。
真正的问题是缺少按钮类型,打印在表单内的字段具有 "default" 按回车键提交的行为。没有类型的按钮的默认值是 "submit",所以它试图提交表单,并且启动了第一个没有类型的按钮,我修复了按钮并在我的指令上放置了一个 ng-keydown 函数以正确处理 Enter密钥提交。