为angular指令提供一个模型名称,以访问它在父级中的作用域

时间:2014-04-22 14:51:35

标签: javascript angularjs

当我在HTML中使用它时,我试图通过在它上面使用模型属性来访问指令的隔离范围。例如

<div controller="parent">
    <hello-world data-ng-model="hw"/>
    <input type="submit"/>
</div>

父母的控制者:

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: '<h5>Hello world {{t}}</h4>'
  };
});

t在隔离范围中定义,因为它显示正确。但是,当我单击提交按钮时,我收到错误,因为未定义hw。 (因为hello-world范围没有被分配给父级的&n;&lt; hw&#;;范围变量。我怎样才能将hw定义为hello-world指令的范围?我的用例是制作一个日期选择器,公开通过它的范围选择的日期。比如

<date-picker ng-model="date1"/>
<date-picker ng-model="date2"/>

在指令的范围内,我会确保定义月份,年份等。然后在父控制器中,我可以使用$scope.date1.month和类似的方式来访问所选的日期。

1 个答案:

答案 0 :(得分:2)

在您的评论之后,您似乎需要使用 ngModel 制作自定义可验证元素。

根据ngModel's documentation,可以手动使用ngModelController来完成。以下页面应包含您需要的所有相关信息(请参阅示例中的script.js):https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

祝你好运。

An example of a directive that works with ngModel