2016-05-22 4 views
0

ProductCtrlProduct.htmlという名前のコントローラーがあります。 Product.htmlページでインラインでクリックして言及したいと思います。しかし、別のコントローラへのインラインng-clickは機能していません。次のように私のコードは、あなたがProductdetailsCtrlコントローラを使用するラッピングタグを持っていない場合は、あなたがこのようなボタンにNG-コントローラを追加する必要が異なるコントローラーの角をクリックすると動作しません

var app = angular.module('myapp', []); 
 

 
app.controller('ProductdetailsCtrl', function($scope) { 
 

 
    $scope.showMe = function() { 
 
    alert("button clicked");  
 
    } 
 
});
<div ng-controller="ProductCtrl"> 
 
    <button ng-click="ProductdetailsCtrl.showMe()">Press me</button>  
 
</div>

+0

SHOWME()関数は$スコープ、ないProductdetailsCtrlのプロパティのプロパティです。スコープにProductdetailsCtrl変数もありません。ここで何を達成しようとしているのかは分かりません。なぜProductCtrlのscpeにメソッドを置かないのですか? –

+0

ProductCtrlは、特定の製品を選択して、選択した製品の詳細を表示する場所の製品のリストを入力するためです。 – Rubel

+0

それは良い理由ではありません。 'ng-click =" showDetailOf(product) "'の問題は何ですか? –

答えて

2

、次のとおりです。

すでにトンとラッピングタグを宣言した場合は

<div ng-controller="ProductCtrl"> 
 
     <button ng-controller="ProductdetailsCtrl" ng-click="showMe()">Press me</button>  
 
    </div>

コントローラーの変数を使用することをお勧めします。このように:

var app = angular.module('myapp', []); 
 

 
app.controller('ProductdetailsCtrl', function() { 
 
    var vm = this; 
 
    vm.showMe = function() { 
 
     alert("button clicked");  
 
    }; 
 
});
<div ng-controller="ProductdetailsCtrl as ctrl1"> 
 
    <div ng-controller="ProductCtrl"> 
 
     <button ng-click="ctrl1.showMe()">Press me</button>  
 
    </div> 
 
</div>

+0

良いアイデア。ありがとうございました.. – Rubel

関連する問題