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'},