私はapp.home
状態を私のアプリケーションに持っていて、異なるスコープの専門家がリストされています。また、専門家をフィルタリングできる範囲のリストもあります(例:医学、法、心理など)。スペシャリストをスコープでフィルタリングすると、変更するブラウザにURLが必要です。このURLを訪問して、必要な範囲で既にフィルタリングされているスペシャリストを取得することができます。私はES6構文とWebpackを使ってコンパイルしています。複数のURLが1つのAngular Ui Router状態にある
class HomeCtrl {
constructor(users, Categories) {
"ngInject";
this.filters = {};
this.users = users;
// Import categories from Categories Service
this.categories = Categories.categories;
}
}
export default HomeCtrl;
は私index.jsです:私のhome.controller.jsです。ここ
home.config.js
function homeConfig ($stateProvider) {
"ngInject";
$stateProvider.state('app.home', {
url: '/',
controller: 'HomeCtrl',
template: require('./home.html'),
resolve: {
users: function (User) {
// Call a method from our UserService
return User.userList().then((users) => users);
}
}
});
}
export default homeConfig
:だから、ここに私のルータですこのモジュールはバンドルされ、後でメインアプリケーションモジュールに組み込まれます。
import angular from 'angular';
import homeConfig from './home.config';
import HomeCtrl from './home.controller';
let homeModule = angular.module('app.home', []);
homeModule.config(homeConfig);
homeModule.controller('HomeCtrl', HomeCtrl);
export default homeModule;
そして最後に、これは私のテンプレートです:
<ul>
<li>
<a href="#" ng-click="$ctrl.filters.scope = ''">Show all</a
</li>
<li ng-repeat="category in $ctrl.categories">
<a ng-click="$ctrl.filters.scope = category">{{category}}</a>
</li>
</ul>
<!-- Specialists displayed -->
<div ng-repeat="user in $ctrl.users | filter: $ctrl.filters">
<img ng-src="{{user.image}}"/>
<p>{{user.userName}}</p>
</div>
は、私は私の専門家をフィルタリングする際に、URLを変更する方法はありますか?
ありがとうございます!しかし残念ながらそれは期待通りには機能しません。 URLを変更しても、そのURLをコピーして新しいブラウザタブで開くと、すべてのスペシャリストが返されます。私のサービス方法で何かを変えるべきですか? – AlexNikolaev94
あなたのサービスは、URLからフィルターを取り、要求に使用する必要があります。だから私は追加する方法とそれをどのように抽出するのかを示しています。私は別のソリューションを追加しました。また、データセットがあまり重すぎない場合は、フロントエンドですべてのユーザーとフィルターを要求することができます –
2番目のソリューションは素晴らしいです、ありがとう! – AlexNikolaev94