Angularjs 通过UI网格cellTemplate呈现的指令呈现不正确

Angularjs 通过UI网格cellTemplate呈现的指令呈现不正确,angularjs,angularjs-directive,angular-ui-grid,Angularjs,Angularjs Directive,Angular Ui Grid,我遇到了一个奇怪的问题,因为我的指令似乎是在陈旧的row.entities上执行的,这意味着它在向下滚动或修改网格排序时不会获得新值。最初的~20行渲染效果良好,但超过该值后,指令与行解除关联 请参见我的“非常拼凑”的示例。它看起来像是在对传递给指令change的表达式的值进行排序时,但表达式本身保持不变 您应该将作用域&表达式绑定更改为=值绑定(并使用作用域访问值。安装,无需函数调用),然后您就可以跟踪更改 // ... scope: { installs: '=' }, // ...

我遇到了一个奇怪的问题,因为我的指令似乎是在陈旧的row.entities上执行的,这意味着它在向下滚动或修改网格排序时不会获得新值。最初的~20行渲染效果良好,但超过该值后,指令与行解除关联


请参见我的“非常拼凑”的示例。

它看起来像是在对传递给指令change的表达式的值进行排序时,但表达式本身保持不变

您应该将作用域
&
表达式绑定更改为
=
值绑定(并使用
作用域访问值。安装
,无需函数调用),然后您就可以跟踪更改

// ...
scope: {
  installs: '='
},
// ...
然后,要跟踪更改,可以使用
scope.$watch
并将代码放入其中

link: function (scope, element, attrs) {
  scope.$watch('installs', function(newValue) {
    // your code, you can use newValue as current installs value
    var installs = newValue;
    // ...
  });
}

示例。

无论您使用表达式绑定还是值绑定,都会得到相同的行为(在这两个示例中,手表当然仍然解决了问题)。我的印象是link方法的执行方式与watch相同。与手表相比,你能解释一下链接功能的工作原理吗?