我跟隨Meteor To-Do App tutorial with Angular integration並且正在學習過濾集合。我已經能夠通過遵循教程中的原則在我正在開發的應用程序的集合上實現一個簡單的過濾器,但現在我試圖弄清楚如何向過濾器添加多個查詢。多角度流星的集合上的多個濾鏡
在該示例中,您可以通過切換複選框來查看不完整的任務。這在控制器中通過觀察$scope.hideCompleted
進行更改並將其作爲Mongo查詢傳遞以過濾Meteor集合來實現。
看守
$scope.$watch('hideCompleted', function() {
if ($scope.hideCompleted)
$scope.query = {checked: {$ne: true}};
else
$scope.query = {};
});
收集過濾
$scope.tasks = $meteor.collection(function() {
return Tasks.find($scope.getReactively('query'), {sort: {createdAt: -1}})
});
如何使查詢支持多種過濾器?例如,假設我已經選擇擴展示例並按優先級對每個待辦事項進行排序。然後,我將有一個輸入字段供用戶按優先級過濾集合,其值將綁定到$scope.priority
。現在,如果我想通過不完整和優先級= $ scope.priority任務來過濾待辦事項列表,我理解Mongo查詢需要沿着Tasks.find({ $and: [{ checked: {$ne: true} },{ priority: $scope.priority }]},{ sort: { createdAt: -1 } })
的行。
在我的應用程序,我已經能夠做兩個觀察家正確地跟蹤變化兩個變量的範圍,類似於我的$scope.hideCompleted
和$scope.priority
例子,但我不知道如何採取下一步合併查詢過濾集合時。我也修修補補周圍有點與this package,因爲我最終會希望能夠過濾和排序許多標準,但我切換到我這裏描述的概念之前,並沒有得到它太遠。
我很感激任何幫助。謝謝!
這看起來非常簡單,並以較少的幾行完成同樣的事情。我在控制器的其他地方處理訂閱,所以我可能需要做一些調整,但我認爲我會更喜歡這種方法,因爲它可以用較少的幾行完成相同的事情。我還需要閱讀$ meteorSubscribe和$ meteorCollection。 – aliigleed
太棒了,如果你遇到你的調整,不要猶豫,開始一個新的問題。此外,如果您不介意,請標記正確的答案,以便他人更容易找到;) –
是的,我計劃一旦測試出來就標記出來。 :)今天早上我試了一下,看來它工作得很好,並且調整我現有的代碼也不錯。但是,我注意到這將在任何模型完全更改之前應用過濾器(即,在開始時返回無需執行任務,因爲所有任務都分配了優先級,並且一旦客戶機將優先級設置爲輸入表格)。 – aliigleed