找不到指令"..."要求的控制器"ngModel"



这里发生了什么?

以下是我的指示:

// 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
}
};
});

以下是正在使用的指令示例:

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

以下是实际错误文本:

错误:找不到指令"submitRequired"所需的控制器"ngModel"!http://errors.angularjs.org/1.2.2/$compile/ctreq?p0=ng模型&p1=submit必需在http://www.domain.ca/Scripts/angular/angular.js:78:12在getControllers(http://www.domain.ca/Scripts/angular/angular.js:5972:19)在nodeLinkFn(http://www.domain.ca/Scripts/angular/angular.js:6139:35)在compositeLinkFn(http://www.domain.ca/Scripts/angular/angular.js:5550:15)在nodeLinkFn(http://www.domain.ca/Scripts/angular/angular.js:6132:24)在compositeLinkFn(http://www.domain.ca/Scripts/angular/angular.js:5550:15)在publicLinkFn(http://www.domain.ca/Scripts/angular/angular.js:5458:30)在http://www.domain.ca/Scripts/angular/angular.js:1299:27范围内$收到范围$eval(http://www.domain.ca/Scripts/angular/angular.js:11634:28)范围内$收到范围$应用(http://www.domain.ca/Scripts/angular/angular.js:11734:23)angular.js:9159(匿名函数)angular.js:9159$get angular.js:6751nodeLinkFn angular.js:6141compositeLinkFn angular.js:5550nodeLinkFn angular.js:6132compositeLinkFn angular.js:5550publicLinkFn angular.js:5548(匿名函数)angular.js:1299$get.Scope.$eval angular.js:11634$get.Scope.$apply angular.js:11734(匿名函数)angular.js:1297调用angular.js:3363doBootstrap angular.js:1295bootstrap angular.js:1309angularUnit angular.js:1258(匿名函数)angular.js:20210触发角度js:2315(匿名函数)angular.js:2579对于每个角度js:300eventHandler angular.js:2578ar.js:7874

为了以防万一,上面的<input>片段不包含拼写错误,这就是问题所在:

the-model

我们需要ng-model

<input bse-input submit-required="true" ng-model="someModel.Property"></input>

angular使用规范化/非规范化命名约定,这最终意味着:ng-model是如何表达ngModel的html方式。HTML不区分大小写。。。这就解决了这个问题

建议。如果我们使用应用于一个元素的多个指令:

  • bse输入
  • 提交必填项

我们应该让它们都使用标准INPUT设置。因此,两者都可能需要ng模型,作为访问传递给输入的模型的一种方式。

如果模型应该代表不同的设置,这是完全可以的,我们不必跳过ng模型以及

关于require:

当您有需要相互通信的嵌套指令时这是通过一个控制器来实现的。

其他指令可以使用require属性将此控制器传递给它们语法。需求的完整形式看起来像:

require: '^?directiveName'

需求字符串的解释:

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

最新更新