2017-04-16 9 views
0

ich mit kantigem bin hier und jetzt habe ich einige Probleme ...ng Klick feuert nicht mit einer Funktion

Also lassen Sie uns sagen, ich habe einen Controller namens ViewModelController und ich controlleras verwenden, wenn ich die Routen definieren folgende: enter image description here.

Und in meiner Vorlage Ich habe gerade zwei div difened, die den Behälter in zwei Teile trennen:

<div id='viewleft' class="divleft col-md-5"></div> 
<div id='viewright' class="col-md-7 divright"></div> 

Und in ViewModelController, habe ich einige Code, um die Vorlage zu machen, wenn die Steuerung geladen wird. Die Frage ist, dass der ng-Klick, den ich in alle Elemente stecke, einfach nicht ausgelöst wird und ich nicht wirklich weiß, wo das Problem liegt.

Ich habe versucht, wie unten, aber es funktioniert einfach nicht.

var content1 = '<ul><li><button id ="b1" ng-click="vmCtrl.cprint($event.target)">123</button></li><ul>'; 
    $("#viewleft").html(content1); 

Kann mir jemand dabei helfen? Vielen Dank im Voraus, die besten Wünsche.

Antwort

0

Sie haben diesen HTML zu erstellen, so dass Winkel Code

$compile($("#viewleft").contents())(scope); 

oder besser funktionieren wird, eine Richtlinie zu verwenden, die HTML, wenn sein Wert ändert kompilieren.

app.directive('compile', ['$compile', function ($compile) { 
     return function (scope, element, attrs) { 
      scope.$watch(
       function (scope) { 
        // watch the 'compile' expression for changes 
        return scope.$eval(attrs.compile); 
       }, 
       function (value) { 
        // when the 'compile' expression changes 
        // assign it into the current DOM 
        element.html(value); 

        // compile the new DOM and link it to the current 
        // scope. 
        // NOTE: we only compile .childNodes so that 
        // we don't get into infinite loop compiling ourselves 
        $compile(element.contents())(scope); 
       } 
      ); 
     }; 
    }]); 

in Controller können Sie html Umfang variable

$scope.template= '<ul><li><button id ="b1" ng-click="vmCtrl.cprint($event.target)">123</button></li><ul>'; 

und auf Sicht asssign können Sie hinzufügen, dass

<div id='viewleft' class="divleft col-md-5" compile="template"></div> 

Sie this docs für $ kompilieren verweisen.

+0

Hallo, danke fürs Antworten. Sollte ich irgendeine Änderung in den Codes der Kompilierungsanweisung machen, wenn ich Controller als Syntax verwende, d. H. VmCtrl anstelle von scope? Oder es ist nur okay, es ohne Veränderung zu benutzen? Sorry, ein bisschen nervig sein: p. – ywy9876

+0

Ich glaube nicht, aber Sie müssen sich selbst testen :) –

+0

Scheint wie es funktionierte, vielen Dank! – ywy9876

Verwandte Themen