Ich habe ein Popup-Formular, in dem viele Registerkarten vorhanden sind.Zugriff auf die Methode des übergeordneten Controllers über die untergeordnete Benutzeroberfläche nicht möglich
Sein wie folgt aus:
index.js
vm.openCreateOrEditPropertyModal = function (resolveProperty) {
var modalInstance = $uibModal.open({
templateUrl: '~/App/tenant/views/propertymanagement/createOrEditPropertyModal.cshtml',
controller: 'tenant.views.propertymanagement.createOrEditPropertyModal as vm',
resolve: {
resolveProperty: function() {
return resolveProperty;
}
}
});
};
Tabs sind wie folgt aus:
createOrEditPropertyModal.cshtml
<uib-tabset class="tab-container tabbable-line" type="pills">
<uib-tab heading="@L("PropertyInformation")">
<div ng-include="'~/App/tenant/views/propertymanagement/tabs/propertyForm.cshtml'"></div>
</uib-tab>
</uib-tabset>
createOrEditPropertyModal.js
(function() {
appModule.controller("tenant.views.propertymanagement.createOrEditPropertyModal", [
"$scope", "resolveProperty", "localStorageService", "$uibModalInstance", function ($scope, resolveProperty, localStorageService, $uibModalInstance) {
var vm = this;
//to close the pop up
vm.cancel = function() {
$uibModalInstance.close();
};
}
]);
})();
propertyForm.cshtml
<div ng-controller="tenant.views.propertymanagement.tabs.propertyForm as vm">
<button type="button" ng-click="vm.cancel()">@L("Close")</button>
</div>
propertyForm.js
(function() {
appModule.controller("tenant.views.propertymanagement.propertyForm", [
"$scope", "resolveProperty", "localStorageService", function ($scope, resolveProperty, localStorageService) {
var vm = this;
}
]);
})();
Above aufgebaut arbeitet fine.Now I cancel()
Methode zugreifen müssen auf der createOrEditPropertyModal.js
-Datei von dem untergeordneten Formular (d. H. propertyForm.cshtml
). Aber es wird nicht gefeuert.Können Sie mir sagen, wie das geht? Ich habe es versucht ng-click="$parent.cancel()"
. Aber es funktioniert nicht.
Eigentlich meine Einrichtung ist so. Ich habe die Frage aktualisiert. Bitte beachten Sie das. Aber diese 'cancel()' Methode wird nicht gefeuert.Ist das wegen des gleichen Namens für die Controller? Ich meine über die 'vm' – Sampath
Könnte sein .. Versuchen Sie den Namen zu ändern .. auf der Ansicht muss es funktionieren –
Es ist, weil Ihr Controller' propertyForm als vm' Shadowing 'createOrEditPropertyModal als vm'. – fodma1