У меня есть приложение, которое использует независимую директиву, не привязанную к приложению, в любом случае , но может быть вызвана с $ scope. $ Emit() из любого места. Я бы хотел, чтобы он загружал внутренний динамический шаблон на основе идентификатора продукта, полученного из $ scope. Функция $ on() в контроллере.Простая динамическая директива AngularJS
Вот упрощенная версия того, что я до сих пор ...
index.html
<div quote-application ng-show="ifActive"></div>
путь/к/template.html
<form class="application-modal">
<button>X</button>
<!-- this is what i would like to by dynamically loaded -->
<fieldset product="{{productID}}"></fieldset>
<button>Add Product</button>
<button>Cancel</button>
</form>
JS файла
angular.module('client.quote-app', [])
.controller('quoteCtrl', ['$scope', function($scope) {
$scope.ifActive = false;
$scope.productID = '0000';
$scope.$on('requestQuote', function(event, productID) {
$scope.ifActive = true;
$scope.productID = productID; //this is coming through okay
});
}])
//this loads fine
.directive('quoteApplication', function() {
return {
controller : 'quoteCtrl',
templateUrl : 'path/to/template.html'
}
})
//not sure what to do here ...
.directive('product', function() {
return {
//<!-- I want this to load a template
based off of the productID every
time $scope.on() gets called --!>
templateUrl : 'path/to' + productID + '.html'
}
})
Как я могу ввести идентификатор продукта в директиву? Я получаю ошибку «productID is not defined». – geschwe1
Вы должны сопоставить его с областью изоляции. https://docs.angularjs.org/guide/directive –