[フィルター] を新しくクリックしても、以前の出力はクリアされませんが、存在するものに追加されます。たとえば、「禁止」でフィルタリングすると、禁止されたユーザーのリストが表示されます。次の「登録済み」によるフィルターでは、「禁止済み」は削除されず、「登録済み」がテーブルの最後に追加されます。コントローラーで $scope.site_users が上書きされましたが、どこかにまだ以前のフィルター出力が保存されています。なぜそれが起こるのですか?パッケージ側に何かあるのでしょうか?
インストールされたパッケージ:
urigo:angular - Angular
angularui:angular-ui-router
accounts-password
accounts-ui
twbs:bootstrap
削除されたパッケージ:
insecure
autopublish
またはコードで
コントローラ:
angular.module("sis_admin_am").controller("UsersListCtrl", ['$scope', '$meteor',
function($scope, $meteor){
$scope.filter = function(){
$scope.site_users = '';
$scope.site_users = $meteor.collection(Users).subscribe('site_users_filtered', {status: $scope.userStatus});
};
}
]);
意見:
<form ng-submit="filter()">
<button>Filter</button>
<select ng-model="userStatus" >
<option ng-selected="selected">banned</option>
<option>registered</option>
<option>active</option>
</select>
</form>
<p></p>
<table class="table">
<tr class="panel panel-default">
<th>Name</th>
<th>Email</th>
</tr>
<tr ng-repeat="user in site_users">
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
</tr>
</table>
サーバー部分:
Meteor.publish('site_users_filtered', function(options) {
console.log('options:', options);
return Users.find(options);
});