ng-controller への属性値を持つディレクティブ テンプレート内に div がある場合、それを変数に変更するにはどうすればよいですか。
original html : <div ng-controller="HomeController"> ..... </div>
directive: <my-directive some-var-name="HomeController"> ....</my-directive>
.directive('MyDirective', function(){
return {
.....
scope:
{
someVarName : "????" <-- what type? "=", "@", "&" : none seem to work
},
template: '<div ng-controller="someVarName">.....</div>'
}
});
これを解決してくれてありがとうマーク:
<select-add-new select-model="$parent.selectedFrontAxle" text="add new"
select-phrase="Front Axle Type" preselected-filter="Front"
label-name="Front Axle" open-dialog="Front"
select-options="axleTypes" var-ctrl="AxleTypesCtrl"></select-add-new>
.directive('selectAddNew', function () {
return {
replace: true,
restrict: "E",
scope: {
selectModel: "=",
selectOptions:"=",
labelName: "@",
preselectedFilter: "@",
selectPhrase: "@",
text: "@"
},
compile: function(tElement, attrs) {
var div = tElement.find('#ctrlId');
div.attr('ng-controller', attrs.varCtrl);
},
template: '<div>' +
'<div class="local-label">{{labelName}}: </div>' +
'<name-value-select-control select-phrase="{{selectPhrase}}" selected-item="selectModel" preselected-filter="{{preselectedFilter}}" options="selectOptions"></name-value-select-control>' +
'<div id="ctrlId">' +
'<div txt-add-new text="{{text}}" action="openDialog(\'Front\')" style="display: inline-block"></div>' +
'</div>' +
'</div>'
};
}))
- - - - - - - - - - - - - - - - - - - - - - -マーク - - --------------------------------------------------
プランカーは次のとおりです。
http://plnkr.co/edit/b6G2y3yqjhxpu059ZrWB
問題は次のとおりです。
2 つのディレクティブを 1 つのスーパー ディレクティブに結合しました。app.js のディレクティブ 'selectAddNew' に移動すると、下から 3 行目に次のように表示されます。
......... action="openDialog(\'Front\')" .................
しかし、それはハードコードされています。スーパーディレクティブのアクションにするためにあらゆる方法を試しましたが、最も近いのは、フォーム全体のウィンドウを開く共通ダイアログでした。何か案は?