Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为angular指令指定一个模型名称以访问它';父对象中的范围_Javascript_Angularjs - Fatal编程技术网

Javascript 为angular指令指定一个模型名称以访问它';父对象中的范围

Javascript 为angular指令指定一个模型名称以访问它';父对象中的范围,javascript,angularjs,Javascript,Angularjs,当我在HTML中使用指令时,我试图通过在其元素上使用model属性来访问该指令的独立范围。例如 <div controller="parent"> <hello-world data-ng-model="hw"/> <input type="submit"/> </div> hello world的指令: app.directive('helloWorld', function() { return { link:

当我在HTML中使用指令时,我试图通过在其元素上使用model属性来访问该指令的独立范围。例如

<div controller="parent">
    <hello-world data-ng-model="hw"/>
    <input type="submit"/>
</div>
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>'
  };
});
app.directive('helloWorld',function(){
返回{
链接:函数(范围、元素、属性){
scope.t='test';
}, 
替换:正确,
限制:'E',
作用域:{},
模板:“Hello world{{t}”
};
});
t在隔离范围中定义,因为它正确显示。但是,当我单击submit按钮时,会出现一个错误,因为hw未定义。(因为hello world作用域未分配给父级的'hw'作用域变量。如何将hw定义为hello world指令的作用域?我的用例是创建一个日期选择器,该选择器公开通过其作用域拾取的日期。如

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


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

根据您的注释,您似乎需要使用ngModel创建自定义的可验证元素

根据,这可以通过手动使用
ngModelController
完成。下面的页面应该包含您需要的所有相关信息(请参阅示例中的
script.js
):

祝你好运


您可以发布您的问题的plnkr吗?事实上,
hw
首先在
父控制器的作用域中未定义。您应该在访问它之前检查
$scope.hw
是否已定义,或者给它一个默认值
$scope.hw={t:'Hello world'};
@blint,我知道如何给作为对象的模型指定默认值,就像那样。但区别在于我想要默认值(以及一般的值)由hello world指令分配。听起来您需要为父控制器和指令之间的某些作用域值设置双向绑定,而不是使用ng模型。例如,或者我误解了什么?您的plunkr没有封装您提供的代码,所以。
祝您好运。
:)是+0.5。不完全是这样,因为它不只是将内部范围分配给模型,如果这样的构造根本不存在,我也不会感到惊讶。我低估了模型的内在复杂性(或者可能高估了它的普遍性)。事实上,你不能仅仅通过你的指令发送你的ngModel。事实上,将
ngmodel
添加到自定义元素将修饰您的指令,并将实例化一个单独的
ngModelController
控制器。如果需要组合函数性,则必须进行一些自定义工作,以便使用实例化的
ngModelController
。正如ExpertSystem所提到的,
好运
是答案的一部分;)
<date-picker ng-model="date1"/>
<date-picker ng-model="date2"/>