2013-08-30 36 views
17

Có vấn đề với việc bộ lọc này hoạt động.

$scope.imgCollection.then(function (images) { 
    $scope.images = images.thisGal_images; 

    if ($scope.images[0].order == '0') { 
     console.log('orgName'); 
     $scope.images = $filter('orderBy')($scope.images, 'orgName'); 
    } else { 
     console.log('sort order'); 
     $scope.images = $filter('orderBy')($scope.images, 'sortOrder'); 
     console.log($scope.images); 
    } 
}); 

$ scope.images trả về danh sách hình ảnh từ cơ sở dữ liệu. Trong lần tải lên ban đầu, cột sortOrder được điền bằng '0' vì chúng có thể được sắp xếp qua ui: có thể sắp xếp. Vì vậy, trên quan điểm ban đầu, tôi căn cứ thứ tự sắp xếp trên tên tệp. Sau khi xem ban đầu DB được viết và hình ảnh đầu tiên được đưa ra thứ tự sắp xếp của 1 và gia số từ đó.

Điều này có thể là sự hiểu lầm của tôi về bộ lọc $, nhưng $scope.images = $filter('orderBy')($scope.images,'sortOrder'); không đặt hàng $ scope.images của tôi dựa trên sortOrder.

Cảm ơn

+0

Làm thế nào là nó ra lệnh cho hình ảnh của bạn? Chính xác những gì đang xảy ra và bạn muốn điều gì xảy ra? Bạn có thể đưa ra một ví dụ nhỏ không? –

+0

Loại 'sortOrder' là gì? chuỗi hoặc int? – zsong

+0

@sza, cảm ơn - INT – Bungdaddy

Trả lời

37

Tôi đã tạo bản trình diễn cho bạn và hy vọng bạn có thể so sánh mã và tìm ra vấn đề.

Tôi đoán bạn có thể quên tiêm mô-đun $filter. Xin hãy xem một bản demo.

<div ng-app="myApp" ng-controller="ctrl"> 
    <div ng-repeat="image in images">{{image}}</div> 
    <button ng-click="order('0')">By orgName</button> 
    <button ng-click="order('1')">By sortOrder</button> 
</div> 

var app = angular.module('myApp', []); 

function ctrl($scope, $filter) { 
    $scope.images = [{ 
     orgName: 'B', 
     sortOrder: 111 
    }, { 
     orgName: 'A', 
     sortOrder: 12 
    }, { 
     orgName: 'D', 
     sortOrder: 13 
    }, { 
     orgName: 'C', 
     sortOrder: 14 
    }]; 

    $scope.order = function (order) { 
     if (order == '0') { 
      $scope.images = $filter('orderBy')($scope.images, 'orgName'); 
     } else { 
      $scope.images = $filter('orderBy')($scope.images, 'sortOrder'); 
     } 
    } 
} 

Working Demo

+0

xem xét kỹ hơn, có vẻ như khi tôi sắp xếp theo sortOrder, được đặt thành INT trong DB. Các hình ảnh được đặt hàng: 1,10,11,12,2,3,4,5,6 vv Vì vậy, có lẽ nhận được chuyển đổi thành chuỗi json trong PHP của tôi – Bungdaddy

+1

@Bungdaddy Yep, sau đó bạn cần phải chuyển đổi nó thành int. – zsong

+0

cảm ơn, đó là chìa khóa. Ví dụ đã giúp tôi tìm ra rằng một trong số – Bungdaddy

Các vấn đề liên quan