2016-12-28 7 views
4

私は現在、隔離されたスコープを使用してディレクティブで変更を開始するために戦っています。今のところ、ng-controllerからより多くのコンポーネントベースのアーキテクチャーに移行しようとしていますが、予想以上に難しいことが分かります。隔離されたスコープを持つディレクティブのng-changeで動作するAngularJS - コンポーネントベースのアーキテクチャに移動

私は働くことができないようなフィドルです。 fiddle

私は、問題はここに

app.directive("search", function(service) { 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: {}, 
     controller: ['$scope', function($scope) { 
      $scope.search = function(keyword) { 
       service.searchData(keyword); 
      }; 
     }], 
     template: '<div style="padding-bottom: 15px;">' + 
          '<center>' + 
       '<input type="text" ng-model="keyword" ng-change="search(keyword)"/>' + 
       '</center>' + 
          '</div>' 
    }; 
}); 

のどこかにあるかなり確信している。しかしフィドルは私が達成しようとしているかのより完全なアイデアを与えるだろう。

controller: searchCtrl

以下のように

答えて

1

Chnageコントローラは、単に角度を使用している場合

searchCtrl.$inject = ['$scope', 'service']; 
function searchCtrl($scope, service) { 
    $scope.search = function(keyword) { 
     alert("called - " + keyword); 
     service.searchData(keyword); 
    }; 
} 
+0

これはサービスコールをトリガする際に機能しますが、一度トリガされると、最大コールスタックを超過するまでダイジェストサイクルごとに実行されます。私は実際にコードを実行するcodepenに移動しましたhttp://codepen.io/anon/pen/qqzwJB – Ernie

+0

あなたの工場でいくつかの問題があります、私はそう望みます –

+0

私の答えに示されているように、それは正しい方法の一つですコントローラーが依存関係注入を必要とする場合、コントローラーを指示から呼び出す。それ以外の場合、依存関係を注入できません –

0

チャラン桜の答えが正しいですが、私は角とrequireJSを使用しているディレクティブの外に以下のコードを書きます一緒にここで私が問題を解決するためにしたものです。

ng-changeは起動しなかったので、ng-modelを使用してウォッチャーが変更を監視してから検索機能を起動しました。

これは誰かを助けることを望みます。

関連する問題