Tôi đang cố gắng hiển thị một cây nhị phân của các phần tử, mà tôi đi qua đệ quy với ng-include.Tham số truyền tới Angular ng-include
Sự khác nhau giữa ng-init="item = item.left"
và ng-repeat="item in item.left"
là gì? Trong ví dụ này, nó hoạt động giống hệt nhau, nhưng tôi sử dụng mã tương tự trong một dự án và ở đó nó hoạt động khác nhau. Tôi cho rằng đó là vì phạm vi Góc. Có lẽ tôi không nên sử dụng ng-if, vui lòng giải thích cho tôi cách làm tốt hơn.
Các pane.html là:
<div ng-if="!isArray(item.left)">
<div ng-repeat="item in [item.left]" ng-include="'Views/pane.html'">
</div>
</div>
<div ng-if="isArray(item.left)">
{{item.left[0]}}
</div>
<div ng-if="!isArray(item.right)">
<div ng-repeat="item in [item.right]" ng-include="'Views/pane.html'">
</div>
</div>
<div ng-if="isArray(item.right)">
{{item.right[0]}}
</div>
<div ng-if="!isArray(item.left)">
<div ng-init = "item = item.left" ng-include="'Views/pane.html'">
</div>
</div>
<div ng-if="isArray(item.left)">
{{item.left[0]}}
</div>
<div ng-if="!isArray(item.right)">
<div ng-init="item = item.right" ng-include="'Views/pane.html'">
</div>
</div>
<div ng-if="isArray(item.right)">
{{item.right[0]}}
</div>
Bộ điều khiển là:
var app = angular.module('mycontrollers', []);
app.controller('MainCtrl', function ($scope) {
$scope.tree = {
left: {
left: ["leftleft"],
right: {
left: ["leftrightleft"],
right: ["leftrightright"]
}
},
right: {
left: ["rightleft"],
right: ["rightright"]
}
};
$scope.isArray = function (item) {
return Array.isArray(item);
}
});
EDIT: Trước tiên tôi chạy vào vấn đề mà chỉ thị ng-repeat có một ưu tiên lớn hơn ng- nếu. Tôi đã cố gắng kết hợp chúng, thất bại. IMO thật kỳ lạ khi ng-lặp lại thống trị ng-if.
Một giải pháp là tạo ra một chỉ thị mới, như tôi đã nói trong câu trả lời này: http://stackoverflow.com/a/36916276/2516399 – smartmouse