【发布时间】:2015-07-24 18:54:33
【问题描述】:
我正在尝试使用自定义指令中的单击事件来过滤列表,过滤器工作正常,但我如何分配过滤后的项目以便它反映在 ng-repeat 中?现在,在单击事件发生后,在 quesCompletedHeaders 上使用 ng-repeat 生成的列表不会更改
app.directive('sectionSelector', ['$filter', 'questionnaireSections',
function ($filter, questionnaireSections) {
return {
restrict: 'A',
link: function (scope, iElement, iAttrs) {
iElement.on('click', function () {
scope.$apply(function () {
// filters correct question range
var filtered = $filter('rangeFilter')(scope.quesCompletedHeaders, [5, 10], true);
console.log(filtered); //=> This is correct how to put back on scope?
// There is an ng-repeat on quesCompletedHeaders in the template
// but nothing changes even when assigning filted results back
// on scope
scope.quesCompletedHeaders = filtered;
// works with $parent not sure why a child scope is
// created with the directive
scope.$parent.quesCompletedHeaders = filtered
});
});
}
};
}
]);
好的,我发现 sectionSelector 正在创建一个不应该的子范围的原因,因为 scope:false 是默认值?为什么会这样? 使用 scope.$parent.quesCompletedHeaders = 过滤;解决问题
【问题讨论】:
-
您能否展示一些使用该指令的 html 结构以及与 ng-repeat 的关系?
标签: angularjs angularjs-directive angularjs-filter