有没有办法阻止angularjs监视变量的变化?

有没有办法阻止angularjs监视变量的变化?,angularjs,Angularjs,我有一个变量需要放在模板中,但它只是创建的,从未更新或删除。但是,它在模板的多个区域中被引用。它用于ng repeat,所以它是一个对象。不知道这是否重要 但是我想引用变量一次,阻止angularjs查看它。这可能吗?您熟悉bind吗 Angular在内部为每个ng-*指令创建一个$watch,以使数据保持最新,因此在本例中,仅为了显示少量信息,它会为每个人创建6+1(ngRepeatWatch)观察者,即使该人在显示后应保持不变。对每个人重复这个数量,你就可以知道联系2000名观察者有多容易了

我有一个变量需要放在模板中,但它只是创建的,从未更新或删除。但是,它在模板的多个区域中被引用。它用于ng repeat,所以它是一个对象。不知道这是否重要


但是我想引用变量一次,阻止angularjs查看它。这可能吗?

您熟悉bind吗

Angular在内部为每个ng-*指令创建一个$watch,以使数据保持最新,因此在本例中,仅为了显示少量信息,它会为每个人创建6+1(ngRepeatWatch)观察者,即使该人在显示后应保持不变。对每个人重复这个数量,你就可以知道联系2000名观察者有多容易了。现在,如果您需要它,因为这些数据可能会在显示页面时更改,或者绑定到某些模型,那么就可以了。但大多数情况下,它们是静态数据,渲染后不会更改。这就是bindonce真正能帮助你的地方


我认为一种方法是使用
作用域:{myReadOnly:'&myAttrName'}
对自定义指令执行此操作。这将在作用域上为您提供一个函数,用于返回已计算属性,并且您可以选择只读取一次。但是ngRepeat是双向的开箱即用,所以您可能需要滚动一个自定义的ngRepeat,它不绑定。@JBNizet太棒了,我不知道这一点。我不认为它解决了ng重复问题,但这是一个非常好的信息。@JBNizet它确实有效。如果您试图将其作为变量传递给另一个指令,它将不起作用,但这是可以解决的。Angular有一个内置的一次性绑定机制:您研究过两者之间的区别吗?
<ul>
    <li bindonce ng-repeat="person in Persons">
        <a bo-href="'#/people/' + person.id"><img bo-src="person.imageUrl"></a>
        <a bo-href="'#/people/' + person.id" bo-text="person.name"></a>
        <p bo-class="{'cycled':person.generated}" bo-html="person.description"></p>
    </li>
</ul>