Javascript 为什么此属性不受我的指令';什么范围?
我正在尝试编写一个提供自定义按钮的指令。按钮中的文本通过两个属性提供给指令 按钮模板:Javascript 为什么此属性不受我的指令';什么范围?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试编写一个提供自定义按钮的指令。按钮中的文本通过两个属性提供给指令 按钮模板: <button> <div>{{digit}}</div> <div>{{letters}}</div> </button> 但是,仅使用数字属性的内容字母为空,就好像在我的指令中没有定义一样 我在Codepen上做了一个例子 我做错了什么?谢谢。您必须将字母的绑定类型更改为@,或者将ABC括成单引号。 letters=“ABC
<button>
<div>{{digit}}</div>
<div>{{letters}}</div>
</button>
但是,仅使用数字
属性的内容<代码>字母为空,就好像在我的指令中没有定义一样
我在Codepen上做了一个例子
我做错了什么?谢谢。您必须将字母的绑定类型更改为@,或者将ABC括成单引号。
letters=“ABC”
在范围中查找名为ABC的变量,但未找到,因此未定义(因此未显示)。你能行
<ws-dial digit="2" letters="'ABC'"></ws-dial>
这表示字母将是一个字符串,而不是一个变量,在这种情况下,您将使用指令,就像您已经拥有的一样(不带引号)
范围:{x:'='}
符号表示HTML中的x
属性接收角度表达式。HTMLx=“ABC”
意味着“给变量x
值$scope.ABC
”,这当然是未定义的!另一方面,x=“3”
表示“给x
最小值3”,这是可以的。如果要将一般字符串分配给x
,请使用引号:x=“'ABC'”
在Angularjs中,“=”用于数字,而字符串必须使用“@”
这是您的代码笔代码,以便更好地理解它
不,不傻,这实际上是一个非常常见的错误,绑定的工作方式比最初明显的要复杂得多。请注意,使用@是单向绑定,如果指令不应与绑定值混淆,则使用@可能更安全
angular.module ('MyApp').directive ('wsDial', function () {
return {
restrict: 'E',
templateUrl: 'ws-dial.html',
scope: {
digit: '=',
letters: '='
}
});
<ws-dial digit="2" letters="'ABC'"></ws-dial>
scope: {
digit: '=',
letters: '@'
}