我目前正在编写依赖于使用ngBind的属性指令。我需要元素承载指令的ngBind属性才能工作。我认为一个简单的require: 'ngBind'
就足够了,就像你和ngModel
一样。所以这就是我所做的:
app.directive( 'myDirective', function() {
return {
restrict: 'A',
require: 'ngBind',
link: function(scope, element, attrs) { .. }
});
以下是我如何使用我的指令:
<span my_directive="" ng_bind="valueToBeBound"></span>
但后来我收到了这个错误,所以我想它不可能这样做:
Error: error:ctreq
Missing Required Controller
Controller 'ngBind', required by directive 'myDirective', can't be found!
有没有办法强制出现ngBind
?
谢谢!
答案 0 :(得分:3)
这是预期的行为。正如AngularJS文档中针对指令require
选项所定义的那样:
需要另一个指令并将其控制器作为第四个注入 链接函数的参数。 require需要一个字符串名称(或 要传入的指令的字符串数组。如果使用数组, 注入的参数将是一个相应顺序的数组。如果不 可以找到这样的指令,如果指令没有,则 控制器,然后引发错误(除非没有链接功能 指定,在这种情况下会跳过错误检查)。
由于ngBind
所需的myDirective
指令没有控制器,因此预计会引发错误,除非您删除myDirective
指令中的链接函数,然后angular将简单跳过错误检查。
有两种方法可以达到你想要的效果。
link()
指令中的myDirective
函数,然后在该指令中添加控制器函数以添加组件逻辑。此解决方案的问题在于您无法在link()
函数中附加DOM逻辑。require
选项,只需检查ngBind
指令所在元素中是否存在myDirective
属性。< / LI>
醇>
e.g。
app.directive( 'myDirective', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
if(angular.isUndefined(attrs.ngBind)) {
return;
}
// Your myDirective DOM LOGIC/MANIPULATION should be here
}
});
答案 1 :(得分:-1)
正如在此解释的那样:Angular NgModelController您需要提供ngBind
<span ng-bind="ModelName"></span>