2016-05-10 11 views
1

Dies funktioniert:AngularJS - Mit ng-Controller mit ng-umfassen

<div ng-include="'login.html'" flex ng-if="!loggedIn" ng-controller="LoginController"></div> 

Dies schließt jedoch nicht ({{test}} gibt nichts aus):

<ng-include src="'login.html'" flex ng-if="!loggedIn" ng-controller="LoginController"></ng-include> 

Gibt es einen Grund? Oder ist es ein Fehler?

login.html:

<p>{{test}}</p> 

LoginController:

function LoginController($scope){ 
    $scope.test = 'login'; 
} 
+1

Was meinen Sie damit nicht funktioniert? Es erscheint nicht? Der Controller übergibt keine Bereichsvariable? Es zeigt einen Affen? –

+0

Siehe meine aktualisierte Frage. Vielen Dank. – Shawn

Antwort

1

Ich bin nicht genau sicher, wo "loggedI n "ist definiert, aber wenn ich es auf einem übergeordneten Controller definiere, funktionieren beide Syntaxen wie erwartet.

Plunkr

<div ng-controller="PrntCtrl"> 
     <div ng-include="'test.html'" flex ng-if="!loggedIn" ng-controller="TestCtrl"></div> 
     <ng-include src="'test.html'" flex ng-if="!loggedIn" ng-controller="TestCtrl"></ng-include> 
    </div> 

betrachten einige Fragen: Welche Version von Winkel verwenden Sie? Wie ist Ihre App definiert und wie ist der Controller in der App registriert? Wo ist "angemeldet" definiert?

0

Da diese Richtlinie akzeptiert nur drei Argumente:

  • ngInclude | src = string
  • onload (optional) = string
  • Autoscroll (optional) = string

... nach dem ngInclude Docs

EDIT:

Sie können es einfach lösen wickeln in einem anderen Element ...

<div ng-if="!loggedIn" ng-controller="LoginController"> 
    <div ng-include="'login.html'" flex></div> 
</div> 
+1

Warum kann ich dann 'ng-if' dort hinlegen? 'ng-if' funktioniert bei beiden Beispielen. – Shawn

+0

können Sie lösen einfach in ein anderes Element wrap ... '

' –