私が達成したいのは、動的に生成されるチェックボックスのドロップダウンリストからなるコンポーネントを作成することです。 - DONE
これらのチェックボックスは、ディレクティブ要素の属性property-name
からディレクティブ内の値の名前をフェッチする必要があります。 - 彼らは、名前はので、私はplunkerのように$scope.firstTitle
と$scope.secondTitle
にメインページの参照からそれを読むことができる属性my-model
と同じである$scope
内の変数に(それらの選択されている)の値を返す必要が
をDONE 。 - これは私の問題です
最も重要な点は、前のコンポーネントの$scope
の変数が次のコンポーネントによって上書きされることなく、同じページに多くのコンポーネントを挿入できることです。
私は答えを探してみましたが、1つのソースからテンプレートに値を移入し、テンプレートの値を$scope
に渡すという問題は解決していないようです。ここで
は、私はすでに達成してきたもののplunkerです:https://plnkr.co/edit/Uwarzh7qxrE3pDKxH2u8?p=preview
HTML:
<div ng-app="testModule" ng-controller="componentsController">
<div class="container col-md-3">
<mydropdown property-name="First Title" my-model="firstTitle"></mydropdown>
</div>
<div class="container col-md-3">
<mydropdown property-name="Second Title" my-model="secondTitle"></mydropdown>
</div>
<button class="btn btn-success" type="submit" value="Save" ng-click="testSave()">Test data output</button>
</div>
JS:
angular.module('testModule', [])
.controller('componentsController', ["$scope", function ($scope) {
$scope.testSave = function() {
console.log($scope);
}
}])
.directive('mydropdown', function() {
return {
scope: {
propertyName: '@',
myModel:'='
},
templateUrl: 'component.html',
link: function (scope) {
// this will be replaced with call to service
scope.dropDowns = [
{
value: 'test1',
text: 'Test1'
},
{
value: 'test2',
text: 'Test2'
}
];
}
}
});
Component.html:
<div class="dropdown">
<button class="btn btn-block btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="pull-left">{{propertyName}}</span>
<i class="pull-right glyphicon glyphicon-triangle-bottom"></i>
</button>
<ul class="dropdown-menu">
<li ng-repeat="dropDown in dropDowns">
<div class="checkbox col-md-12">
<label>
<input type="checkbox" ng-model="dropDown.value"> {{dropDown.text}}
</label>
</div>
</li>
</ul>
</div>
嘆願電子ヘルプ。
'firstTitle'変数は、親コントローラによって設定された、または読み取られません。ディレクティブ内の 'myModel'変数はまったく使用されません。このコンポーネントをデータモデルに接続する試みはありませんでした。コンポーネントの接続の基本については、[AngularJS Developer Guide - コンポーネントベースのArchictecture](https://docs.angularjs.org/guide/component#component-based-application-architecture)を参照してください。 – georgeawg
希望の結果が何かを明確にしてください。私は2つのチェックボックス付きのコンボを持っています - あなたはチェックボックスがオンになっている間に厳密に何をしたいのですか? 'componentsController'に何か伝播したいですか?ユーザーの観点からのステップと期待される結果を提供します。今のところあなたが求めていることははっきりしていません。 – jannis
@jannisはい私はデータを$ scopeに伝えたいと思っていた。georgeawgも彼の答えで自分の意図を完全に理解した。 –