AngularJS-本地指令和父范围
我刚开始编写指令,我很确定我掌握了为指令定义“隔离”范围的整个概念 我的指令AngularJS-本地指令和父范围,angularjs,Angularjs,我刚开始编写指令,我很确定我掌握了为指令定义“隔离”范围的整个概念 我的指令numberRoulette应该以随机数的形式在所提供的数字中设置每个数字(或通过属性fields=“此处的某个数字”)的动画。每过一秒,一个数字就会停止动画,并设置为其预期的数字。这有点像吃角子老虎机 <div ng-app="myApp"> <div ng-controller="MasterCtrl"> <span number-roulette fields="10" n
numberRoulette
应该以随机数的形式在所提供的数字中设置每个数字(或通过属性fields=“此处的某个数字”
)的动画。每过一秒,一个数字就会停止动画,并设置为其预期的数字。这有点像吃角子老虎机
<div ng-app="myApp">
<div ng-controller="MasterCtrl">
<span number-roulette fields="10" ng-model="number">
{{number}}
</span>
</div>
</div>
jsiddle:使用
{{showNumber}}
或将{{number}}
移动到范围之外
在范围内,您只能访问指令范围属性(例如,showNumber
),因为为指令创建了隔离范围
在范围之外,您可以访问控制器作用域属性,例如,number
更新:此处不需要ng型号。任何属性都可以,例如:
<span number-roulette fields="10" model="number">
+因为这是正确的答案。但是,为了完整性,您也可以使用转换。在这个解决方案中,我们在span中使用
{{number}}
。后续:假设我从span中删除属性ngModel
。如果我是transclude
ing,我如何使用传递到compile
的函数来访问同级作用域?@actaeon,我不确定我是否了解您的意思,但我认为您正在考虑如何从transcluded作用域访问number
属性(因为它通常从父/控制器作用域继承)。我不认为这是通常使用转置链接函数的方式。从我对该函数的了解来看,它通常只用于在被转置之前对内容进行预处理(即“{number}”)。请参阅。@MarkRajcok:如果我选择不将其添加为指令的属性,即作用域:{localProp:'=attr}
,那么如何在编译
函数中修改{{number}
?
<span number-roulette fields="10" model="number">
scope: {showNumber: '=model'},