给angular指令一个模型名称,以便在父级中访问它的作用域。

17 浏览
0 Comments

给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`等来访问所选择的日期。

0
0 Comments

问题的出现原因是:在Angular指令中,如果想要访问指令的作用域(scope),需要给指令添加一个模型名称。然而,这个问题的提问者最初并没有意识到这一点,可能是对模型(model)的内部复杂性有些低估,或者对其普遍性有些过高估计。

解决方法是:根据ngModel的官方文档,可以通过手动使用ngModelController来实现自定义验证元素。在提供的链接中,可以找到关于ngModelController的所有信息。如果需要将功能组合起来,需要在指令中自定义一些工作,以使用实例化的ngModelController。

以下是一个与ngModel一起工作的指令示例:An example of a directive that works with ngModel

希望你好运。

0