ich eine Richtlinie wie folgt definiert:AngularJS Vorlage vs templateURL in Richtlinie
app.directive('itemComments', ['ajax', function(ajax) {
return {
restrict: 'A',
templateUrl: URL + 'public/Pages/Homepage/ajax/getCommentsTpl',
controller: 'ItemLibraryController',
controllerAs: 'itemLibraryCtrl',
link: function(scope, element, attr) {
var $element = $(element);
scope.$watch(function(scope) {
return $element.find('li').length > 0;
}, function(finished) {
if(finished) {
autosize($element.find('textarea'));
}
});
}
};
}]);
Die Vorlage angegeben durch "templateUrl"
kehrt so etwas wie dieses:
...
<textarea class="form-control textarea-resize" ng-keyup="commentPost($event)" ng-model="textComment"></textarea>
...
In ItemLibraryController ich die Methode commentPost definiert haben (), auf die über keyup auf textarea zugegriffen wird. Das Problem ist, dass $scope.textComment = undefined
anstelle des Wertes in Textarea eingegeben. Wenn ich in HTML ng-model="$parent.textComment"
ändern, dann wird der Wert aus dem Textarea in $scope.textComment
gefunden.
PS. Wenn in der Richtliniendefinition "template" anstelle von "templateUrl" verwendet wird, verschwindet das ng-Modellproblem.
Meine Fragen sind:
Warum muss ich $ parent.textComment da der Umfang der Vorlage verwenden, ist die ItemLibraryController?
Warum erstellt templateUrl einen anderen Bereich für die ng-Modelle innerhalb der Vorlage?
Warum, wenn "Template" anstelle von "templateUrl" in der Definition der Direktive verwendet wird, verschwindet das ng-Modell Problem?
Wie kann ich auf TextComment zugreifen, ohne $ parent.textComment zu verwenden?
, wie Sie den Wert von 'textComment' in geordneten Bereich definiert, mit' $ scope.textComment' oder 'this.textComment'? –
Ich benutze $ scope.textComment – Bogdan