Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角绑定是如何发生的?_Angularjs_Angularjs Watch_Angularjs Bindings - Fatal编程技术网

Angularjs 角绑定是如何发生的?

Angularjs 角绑定是如何发生的?,angularjs,angularjs-watch,angularjs-bindings,Angularjs,Angularjs Watch,Angularjs Bindings,下面是我对angularJS中绑定如何发生的理解。如果专家能提供反馈/意见,那就太好了 <div ng-controller="ctrlA"> {{myvar}} {{anothervar}} </div> $scope.watch( function (scope) { return scope.anothervar; } , function (oldValue, newValue) { // code to manupilate HT

下面是我对angularJS中绑定如何发生的理解。如果专家能提供反馈/意见,那就太好了

<div ng-controller="ctrlA">
  {{myvar}}
  {{anothervar}}
</div>

$scope.watch( function (scope) {
    return scope.anothervar;
  } ,  function (oldValue, newValue) {
    // code to manupilate HTML with new value!!
  });

$scope.watch( function (scope) {
    return scope.myVar;
  } ,  function (oldValue, newValue) {
    // code to manipulate HTML with new value!!
  });

您对Angular如何为每个绑定设置观察者的理解在金钱上是非常正确的。我将直接进入问题,而不是揭穿/讨论你关于角度绑定的内部工作方式的观点

我有个问题。angularJS store是否为每个作用域都有某种键映射(或某些数据结构),其中包含对观察者的引用和该观察者的当前值

$scope
有一个当前活动的观察者(
$$watchers
)的内部数组连接到所述范围,其中一个条目看起来是这样的:

下面的解释是错误的。请参见我的编辑以进行更正

  • eq
    是一个布尔值,指示
    fn
    中的表达式是否成立 对/错
  • exp
    是您在视图中显示在“波形”之间的原始字符串值
    {{raw\u expr\u value}
  • 我相信
    fn
    是对内部的引用(或者你说的“对观察者的引用”)。如果这是一个手册
    $scope.$watch('val','u func)
    fn
    将是对
    \u func
    的引用
  • get
    。如果有人能告诉我这是什么,那就太好了
  • last
    是表达式计算到的最新值
尽管如此,通常您不应该接触内部
$$
变量,但如果必须这样做,请继续。轻踏:)


编辑 我错了。查看
$watch
,属性如下:

  • fn
    -您的观察者的回调函数
  • last
    -在设置
    $watch
    时应用的唯一值。可能是为了触发表达式进行初始计算
  • get
    -用
    $parse()包装的表达式
  • exp
    -这是我以前从未听说过的事情。返回到视图中的关注表达式/
    $watch
    处理程序
  • eq
    -这就是我的哦,非常错误的地方。布尔值指示我们是在进行深度监视(对象相等)还是常规的浅监视

部分答案如下:我使用了Angular prettyPrintExpression:它似乎(从1.5.0开始)有时包含来自DOM绑定的原始表达式。例如,
ng class=“{active:$state.includes('profile')}
将导致使用
prettyPrintExpression
=
{active:$state.includes('profile')}
监听器中的一个复杂监视函数。这对于日志记录绝对有用!(正如“漂亮打印”所暗示的)
watch ref (for myvar) -> current value (of myvar)
watch ref (for anothervar) -> current value (of anothervar)