给angular指令一个模型名称,以便在父级中访问它的作用域。
给angular指令一个模型名称,以便在父级中访问它的作用域。
我试图通过在HTML中使用指令的元素上的model属性来访问指令的隔离作用域。例如:
父控制器:
function($scope){ $scope.submit = function(){ alert($scope.hw.t); } };
hello-world指令:
app.directive('helloWorld', function() { return { link: function(scope, element, attrs){ scope.t = 'test'; }, replace: true, restrict: 'E', scope: {}, template: 'Hello world {{t}}' }; });
t在隔离作用域中定义,因为它正确显示。然而,当我点击提交按钮时,会出现错误,因为hw未定义。(因为hello-world作用域未被分配给父级的'hw'作用域变量。如何让hw被定义为hello-world指令的作用域?我的用例是创建一个日期选择器,通过其作用域公开选择的日期。例如:
在指令的作用域中,我会确保月份、年份等被定义。然后在父控制器中,我可以使用`$scope.date1.month`等来访问所选择的日期。
问题的出现原因是:在Angular指令中,如果想要访问指令的作用域(scope),需要给指令添加一个模型名称。然而,这个问题的提问者最初并没有意识到这一点,可能是对模型(model)的内部复杂性有些低估,或者对其普遍性有些过高估计。
解决方法是:根据ngModel的官方文档,可以通过手动使用ngModelController来实现自定义验证元素。在提供的链接中,可以找到关于ngModelController的所有信息。如果需要将功能组合起来,需要在指令中自定义一些工作,以使用实例化的ngModelController。
以下是一个与ngModel一起工作的指令示例:An example of a directive that works with ngModel。
希望你好运。