Ich habe diese Frage gestellt, aber die spezifische Frage, die ich frage hat sich dramatisch verändert.Wie Instanziieren ng-Controller basierend auf einer Bedingung
Ich habe ein Stück Code:
<div ng-attr-controller="{{pings || 'PingsCtrl as pings' }}">
<h1 ng-click="pings.press()">asdf</h1>
</div>
Dieser Code in zwei HTML-Seiten eingespritzt wird. Eine Seite ruft bereits PingsCtrl
an. Der andere nicht. Ich versuche wirklich, diesen Code DRY zu behalten, und ich möchte nur eine Referenz des obigen Codes haben.
Wie kann ich den obigen Code schreiben, um ng-controller
zu generieren, wenn PingsCtrl
nicht bereits instanziiert wurde.
Hier sind die zwei HTML-Seiten.
HTML
// First page
<html ng-app="coolApp">
<div ng-controller="PingsCtrl as pings">
<div ng-attr-controller="{{pings || 'PingsCtrl as pings' }}">
<h1 ng-click="pings.press()">asdf</h1>
</div>
</div>
</html>
// Second page
<html ng-app="coolApp">
<div ng-attr-controller="{{pings || 'PingsCtrl as pings' }}">
<h1 ng-click="pings.press()">asdf</h1>
</div>
</html>
Javascript ist hier:
angular.module('coolApp', [])
.controller('PingsCtrl', function() {
var vm = this;
vm.press = function() {alert(123)};
})
Was ist falsch und wie kann ich dieses Problem beheben?
können Sie zusammen eine Plunker oder jsfiddle? – SoluableNonagon
Erwägen Sie, allgemeine Funktionen in einen ** Werksdienst ** zu stellen. Sie sind Singletons und werden nur einmal automatisch geladen. Siehe https://docs.angularjs.org/guide/services#creating-services – georgeawg
Ich versuche etwas zusammenzufügen. Der Code, den ich gepostet habe, ist jedoch alles, was benötigt wird. – jason328