Angularjs ng attr未对指令元素求值
我正试图使用元素属性将数据从控制器传递到隔离范围。以下是视图中的我的标记: 问题是cid被分配了“{question.id}}”,而不是question.id的值。我试图使用ng attr cid=“question.id”,但这也不起作用。最重要的是,ctype被评估为未定义 如果我在任何其他元素上添加ng attr cid,它将计算并向元素添加cid=“” 有人能解释一下我遗漏了什么吗?在一个独立的作用域中(当您在指令上指定一个作用域对象时得到的),您可以根据原始元素的属性将变量导入到作用域中 在这种情况下,不需要使用Angularjs ng attr未对指令元素求值,angularjs,coffeescript,Angularjs,Coffeescript,我正试图使用元素属性将数据从控制器传递到隔离范围。以下是视图中的我的标记: 问题是cid被分配了“{question.id}}”,而不是question.id的值。我试图使用ng attr cid=“question.id”,但这也不起作用。最重要的是,ctype被评估为未定义 如果我在任何其他元素上添加ng attr cid,它将计算并向元素添加cid=“” 有人能解释一下我遗漏了什么吗?在一个独立的作用域中(当您在指令上指定一个作用域对象时得到的),您可以根据原始元素的属性将变量导入到作用
ng attr
,因为我们的指令将处理获取值的操作
用于复制变量,因此只需提供变量名称,例如“=”
cid=“question.id”
用于在将变量传递到指令之前插入变量,例如“@”
。对于传递原始字符串也非常方便cid=“{{question.id}}”
- 放下
ng属性
- 将指令
更改为scope.cid
或在HTML中使用“@”
cid=“question.id”
- 检查
的值(不确定这是否是故意多元化的,因为指令中未定义questions
,这意味着ctype
也未定义questions
下面是一个。不完全清楚为什么您需要在cid属性上使用ng attr前缀,但如果您确实需要这样做,那么不幸的是,您的“cid”隔离范围值干扰了angular如何处理ng attr-*的一些实现细节 您可以在指令中使用一个link函数来解决这个问题,该函数观察ng attr cid将创建的“cid”属性,并删除隔离作用域定义中现有的
cid:'='
属性
... your existing directive definition ...
link: function link(scope, elem, attrs) {
attrs.$observe('cid', function(val) {
scope['cid'] = val;
});
}
... etc, etc ...
这将在cid
属性上设置一个观察者,并随时更新范围
... your existing directive definition ...
link: function link(scope, elem, attrs) {
attrs.$observe('cid', function(val) {
scope['cid'] = val;
});
}
... etc, etc ...