app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
上記は、controller
内で$http.get
と$filter
を使用しようとしているコードの例です。
唯一の問題は、そのように使用すると、コンソールログに$filter is not a function
というエラーがスローされることです。
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
それらを入れ替えると、$http is undefined
というエラーがスローされます。
使用している場合
_app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
_
変数_$filter
_は実際には_$http
_のインスタンスであり、_$http
_は_$filter
_のインスタンスです。実際には、function(...)
paramsに何が書かれているかは関係ありません。
ここで重要なのは、たとえば、使用している注射剤の順序です。
_app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {
_
インスタンスにマップされます:
angular docs:
Angularは、引数の名前からコントローラーのコンストラクター関数へのコントローラーの依存関係を推測するため、PhoneListCtrlコントローラーのJavaScriptコードを縮小すると、その関数の引数もすべて縮小されます。依存性注入器はサービスを正しく識別できません。
したがって、youtコントローラーに配列表記を使用することで、コードが縮小された後にコードが機能することを確認できます。
httpの後にフィルターを追加し、angularバージョンは、フィルターの使用方法も防御します。
plateFormController.$inject = ['$scope', '$http',
'$filter','$timeout', '$q', '$mdSidenav', '$log'];
function plateFormController($scope, $http,$filter, $timeout, $q) {
jsonByName=$filter('filter')($scope.json, { name: 'a' });
}
私の場合、期待されるリストオブジェクトがnullでないことを確認することにより、期待されるデータのリストオブジェクトはnullになります。私はこのエラーを回避することができます。