【发布时间】:2014-03-28 17:12:49
【问题描述】:
对于在指令模板中定义的输入,我想将其模型绑定到其父范围内的属性。由于指令的多个实例在一个页面上,因此需要一个隔离范围。我想避免必须将模型作为指令声明中的属性传递。看起来这应该是可能的;但它不起作用。
指令:
catalogApp.directive("cmFieldFilterDtv", function () {
return {
templateUrl: "/templates/directives/field-filter-dtv.html",
restrict: 'E',
scope: {},
link: function (scope, element, attrs) {
var field = attrs.fid;
var fieldCamel = field.toLowerCaseFirst();
scope.fid = 'filter' + field;
scope.model = scope.$parent['filters.' + fieldCamel];
scope.options = scope.$parent['configFilter' + field];
}
}
});
模板:
<input id="{{fid}}"
ng-model="model"
data-kendo-multi-select
data-k-options="options" />
页面:
<cm-field-filter-dtv fid="PartNumber"></cm-field-filter-dtv>
<cm-field-filter-dtv fid="PartType"></cm-field-filter-dtv>
<cm-field-filter-dtv fid="Status"></cm-field-filter-dtv>
对输入的选择更改不会(通过模型绑定)推送到父范围的属性。
【问题讨论】:
-
通常,我将指令视为功能齐全的封装单元。因此,每个人都没有“父”范围。听起来您想在代码中添加未定义的全局依赖项,我通常认为这是个坏主意。也就是说,我认为您可以将变量存储在 $rootscope 而不是 $scope;那么它应该可以在指令和包含指令的视图的控制器中访问。
标签: angularjs angularjs-directive