Angularjs 控制器';ngModel';,指令'要求…';,can';找不到

Angularjs 控制器';ngModel';,指令'要求…';,can';找不到,angularjs,directive,Angularjs,Directive,这是怎么回事 以下是我的指示: // template <input ng-model="theModel" /> app.directive('bseInput', function () { return { templateUrl: "/Scripts/bse/bse-inputs.html", scope: { theModel: '=', }, compile:

这是怎么回事

以下是我的指示:

// template <input ng-model="theModel"  />
app.directive('bseInput', function () {
    return {
        templateUrl: "/Scripts/bse/bse-inputs.html",
        scope:
        {
            theModel: '=',
        },
        compile: function compile(tElement, tAttrs, transclude) {

            // do stuff

        }
    };
});


app.directive('submitRequired', function (objSvc) {
    return {
        require: 'ngModel',
        link: function (scope, elm, attrs, ctrl) {

          // do something
        }
    };
});
//模板
应用指令('bseInput',函数(){
返回{
templateUrl:“/Scripts/bse/bse inputs.html”,
范围:
{
模型:“=”,
},
编译:函数编译(远程通讯、tAttrs、转置){
//做事
}
};
});
应用指令('submitRequired',函数(objSvc){
返回{
要求:'ngModel',
链接:函数(范围、elm、属性、ctrl){
//做点什么
}
};
});
以下是正在使用的指令示例:

<input bse-input submit-required="true" the-model="someModel"></input>

以下是实际的错误文本:

错误:[$compile:ctreq]找不到指令“submitRequired”所需的控制器“ngModel”! $compile/ctreq?p0=ngModel,p1=submitRequired 在 在GetController()上 在nodeLinkFn() 在kfn()处 在nodeLinkFn() 在kfn()处 在publicLinkFn() 在 范围为$get.Scope.$eval() 在Scope.get.Scope.apply()angular.js:9159处 (匿名函数)angular.js:9159 $get angular.js:6751 nodeLinkFn angular.js:6141 compositeLinkFn angular.js:5550 nodeLinkFn angular.js:6132 compositeLinkFn angular.js:5550 publicLinkFn.js:5458 (匿名函数)angular.js:1299 $get.Scope.$eval angular.js:11634 $get.Scope.$apply angular.js:11734 (匿名函数)angular.js:1297 调用angular.js:3633 doBootstrap angular.js:1295 bootstrap.js:1309 angularInit angular.js:1258 (匿名函数)angular.js:20210 触发器角度。js:2315 (匿名函数)angular.js:2579 forEach.js:300
eventHandler angular.js:2578ar.js:7874

为了防止上面的
代码段不包含打字错误,这就是问题所在:

the-model
我们需要
ng型号

<input bse-input submit-required="true" ng-model="someModel.Property"></input>
对require字符串的解释:

  • directiveName
    :这个驼峰大小写的名称指定控制器应该来自哪个指令。所以如果我们的 指令需要在其父级上找到一个控制器,我们将其写为myMenu
  • 默认情况下,Angular从同一元素上的命名指令获取控制器。添加此选项是可选的 ^symbol表示还要沿着DOM树查找指令。例如,我们需要 添加此符号;最后一个字符串是“^myMenu”
  • 如果找不到所需的控制器,Angular将抛出异常以告知您该问题。添加 A.字符串的符号表示此控制器是可选的,如果不是,则不应引发异常 建立虽然听起来不太可能,但如果我们想让我们在没有 容器,我们可以将其添加为“^myMenu”的最终require字符串

如果使用require,则表示:其他指令可以将此控制器传递给它们。因此,属性require与另一个指令相关,而不是与模型相关。我的意思是,如果您将设置
require:'ngModel'
,那么HTML属性必须包含在ng model中。然后,链接函数将在
ctrl
变量中接收该控制器,您是否会说,现在一切都变得更有意义了?请,如果您可以,请阅读本指令的角度指南。这一点已在此处解释,请搜索:
^myTabs
。享受角度,这是一个神奇的工具;)这里最大的技巧是,在这种特殊情况下,指令和控制器是相等的。看,我们能从另一个指令中得到的,实际上是另一个指令的控制器。我们无法访问其他指令“定义”。。。我们可以访问控制器。这就是我们在他们之间沟通的方式。请阅读指令指南-就在那里;)我的意思是,在这种情况下,他们是平等的。当我们确实需要ngModel时,我们正在关注ngModel指令,但在运行时我们将得到ngModel控制器。。。这是一种设计角度的方法
require:'ngModel'
表示标记中必须存在
ng model
属性
require
还意味着,在运行时,指令的
链接
功能将访问
ngModel
指令的控制器。哇!非常感谢。
require: '^?directiveName'