私は単純な角度の例を行っていますが、なぜそれが機能していないのか分かりません。私はそれが失敗した場所を見つけたようだが、それはなぜではない。AngularJS onclickイベントで1つのアプリケーション内に2つのコントローラがある
Init();
Test1();
Test2(); //**DIRECTLY CALL THIS METHOD**
function Init() {
window.app = angular.module('MyApp', []);
}
function Test1() {
app.controller('MySelectCtrl', function ($scope) {
alert(1);
});
}
function Test2() {
app.controller('MySelectCtrl2', function ($scope) {
alert(2);
});
}
<div data-ng-app="MyApp" >
<p>
<select data-ng-controller="MySelectCtrl" name="repeatSelect" id="repeatSelect" data-ng-model="data.model">
<option data-ng-repeat="option in MyNames" value="{{$index}}">{{MyNames}}</option>
</select>
</p>
<p>
<select disabled="" data-ng-controller="MySelectCtrl2" name="repeatSelect2" id="repeatSelect2" data-ng-model="data.model2" >
<option data-ng-repeat="option in MyNames2" value="{{$index}}">{{MyNames2}}</option></option>
</select>
</p>
</div>
が、これは動作しませんが(onclickの中にTest2関数を呼び出す):
Init();
Test1();
//Test2(); **CALLING THIS THROUGH ONCLICK IN THE FIRST SELECT BELOW**
function Init() {
window.app = angular.module('MyApp', []);
}
function Test1() {
app.controller('MySelectCtrl', function ($scope) {
alert(1);
});
}
function Test2() {
app.controller('MySelectCtrl2', function ($scope) {
alert(2);
});
}
<div data-ng-app="MyApp" >
<p>
<select data-ng-controller="MySelectCtrl" name="repeatSelect" id="repeatSelect" data-ng-model="data.model" onclick="Test2();">
<option data-ng-repeat="option in MyNames" value="{{$index}}">{{MyNames}}</option>
</select>
</p>
<p>
<select disabled="" data-ng-controller="MySelectCtrl2" name="repeatSelect2" id="repeatSelect2" data-ng-model="data.model2" >
<option data-ng-repeat="option in MyNames2" value="{{$index}}">{{MyNames2}}</option></option>
</select>
</p>
</div>
これは仕事(直接使うにTest2関数を呼び出す)を行います
最初の選択をクリックしたときに警告(2)を実行するために、onclickでTest2()を実行するにはどうすればよいですか?
注:上記は単なるテストです。実際には、最初の選択で何が選択されたかに応じて、2番目の選択にアイテムを挿入する($ http ajax呼び出し)必要があります。そのデータをバインドするために別の方法を使用する必要がありますか?
これは、このような「正常」な問題に対処するための非常に邪魔な方法のようです。別の方法でデータをバインドする必要がありますか?上記は単なるテストです。実際には、最初の選択で何が選択されたかに応じて、2番目の選択にアイテムを取り込みたいとします。 – AskPete
両方のモジュールを宣言してすぐにブートストラップすることができない理由はありますか? –
いいえ解決策は1つのコントローラーと2つのモジュールのようです:https://jsfiddle.net/TheSharpieOne/Xku9z/1/ – AskPete