Na zobaczyłem przykład kompilowania "czegoś" dodanego później.Skompilowany kontroler i interpolacja Angularjs
var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
$(document.body).append($div);
angular.element(document).injector().invoke(function($compile) {
var scope = angular.element($div).scope();
$compile($div)(scope);
});
Dodałem ten kod w jquery gotowy funkcji, ale mam dwa problemy:
Pierwszy jest błąd: Argument 'MyCtrl' is not a function, got undefined
.
Po drugie, nie wiem jak sprawić, aby ta content.label
zadziałała! Dodałem go do scope
, ale to nie działa. Jak mam zadzwonić do kontrolera, aby zobaczyć, jak działa powiązanie danych pod numerem content.label
?
mój ostatni zmodyfikowany kod IS:
var app = angular.module('app',[]);
$(function(){
app.controller('MyCtrl',function($scope){
$scope.content = 123;
});
var $div = $('<div ng-controller="MyCtrl">{{content}}</div>');
$(document.body).append($div);
angular.element(document).injector().invoke(function($compile) {
var scope = angular.element($div).scope();
$compile($div)(scope);
});
});
Czy kodzie powyżej błędy? (Takich jak '$ scope.content' nie jest zdefiniowany?) - czy włączyłeś JS? – tymeJV
proszę spojrzeć na zmiany. Jedynym błędem jest ten pokazany powyżej –
. Możesz wywnioskować z html, że etykieta jest własnością treści. ($ scope.content.label = "something" lub $ scope.content = {label: "something"};) – skubski