ng-repeat一次性绑定继承?

时间:2018-04-18 20:56:18

标签: angularjs angularjs-ng-repeat one-time-binding

如果我有ng-repeat指令通过一次性绑定迭代列表列表,那么通过每个内部列表的嵌套ng-repeat是否也需要一次性绑定,还是多余的?

<div ng-repeat="list in ::$ctrl.lists">
  <span ng-repeat="item in list">{{item}}</span>
</div>

我是否需要将内部ng-repeat更改为item in ::list$ctrl.lists永远不会以任何方式改变。

1 个答案:

答案 0 :(得分:1)

指定无处继承,如果绑定了数组,则数组中的对象仍然可以更改,因此最好放置&#39; ::&#39;对于跨度循环。

http://jsfiddle.net/vw2fjxys/64/

extension TreeNode {

    func levelMeans() -> [Double] {
        var sumAtLevel = [Double]()
        var countAtLevel = [Double]()

        func visit(_ node: TreeNode, level: Int) {
            if sumAtLevel.count == level {
                sumAtLevel.append(0)
                countAtLevel.append(0)
            }

            sumAtLevel[level] += node.val
            countAtLevel[level] += 1

            if let left = node.left { visit(left, level: level + 1) }
            if let right = node.right { visit(right, level: level + 1) }
        }

        visit(self, level: 0)
        return zip(sumAtLevel, countAtLevel).map({ $0.0 / $0.1 })
    }

}

let test0 =
    TreeNode(10,
             TreeNode(5),
             TreeNode(15,
                      TreeNode(6),
                      TreeNode(20)))
print(test0.levelMeans())

# Output: [10.0, 10.0, 13.0]

你可以在2秒后看到例子中的::对于内循环没有重新计算它,但没有它。