AngularJS вызывает ng-контроллер, встроенный в другой контроллер

#javascript #angularjs

Вопрос:

Вот фрагмент кода cshtml:

 lt;divgt;  lt;button type="button" ng-click="recalcButton()"gt;Recalc Buttonlt;/buttongt; lt;/divgt; lt;div ng-controller="appealPartialController"gt;  lt;div ng-include="'/Partials/appealsPartial.html'"gt;lt;/divgt; lt;/divgt;  

При нажатии кнопки «Пересчет» я хочу перезагрузить данные в appealPartialController. Любая документация или примеры кода JS будут высоко оценены!

Ответ №1:

Итак, после долгих поисков в Google и хорошей идеи, я нашел решение, использующее встроенный в $scope AngularJS и вызывающее функцию загрузки от родителя.

 $scope.$childHead.$nextSibling.loadAppealModel($scope.claimID);  

Ответ №2:

Вы можете использовать общий параметр. Прежде всего, вы создаете такую услугу, как эта:

 import { Injectable, EventEmitter } from '@angular/core'; import { Subscription } from 'rxjs/internal/Subscription';  @Injectable({  providedIn: 'root' }) export class SharedParamsService {   invokeFirstComponentFunction = new EventEmitter();  subsVar: Subscription;   constructor() { }   onUpdateEnv(key, val) {  var toEmit = [key, val]  this.invokeFirstComponentFunction.emit(toEmit);  } }  

Теперь вы можете выдавать переменную при нажатии кнопки, поэтому в вашем компоненте после импорта SharedParamsService и объявления в вашем конструкторе частных sharedParams: SharedParamsService:

 recalcButton(){  this.sharedParams.onUpdateEnv("btn", this.jobObj.name); }  

Наконец, в компоненте, который вы хотите перезагрузить после импорта SharedParamsService и объявления в вашем конструкторе private sharedParams: SharedParamsService:

 this.sharedParams.subsVar = this.sharedParams.  invokeFirstComponentFunction.subscribe((emitted) =gt; {  if (emitted[0] == "btn") {  this.ngOnInit();  }  });  

конечно, вы можете избежать использования ключа, если у вас есть только эта кнопка для проверки, но, используя этот способ, вы можете подписаться на несколько переключателей кнопок или других переменных.

Комментарии:

1. Rmixion использует AngularJS, это угловые, они несовместимы.

2. Это правильно. В настоящее время я использую AngularJS.