Я пытаюсь сгенерировать HTML и элемент управления вводом из изолированной директивы Angular Scope в Typescript и моделировать этот элемент управления вводом с помощью свойства родительской области.
Проблема, которую я получаю, заключается в том, что хотя Angular $ компилирует html, но значение модели не отображается в элементе управления вводом, НО МОЖЕТ БЫТЬ ВИДЕНО НА КОНСОЛИ БРАУЗЕРА.
Ниже приведена моя угловая директива в машинописном тексте:
class InputControl implements ng.IDirective {
restrict = "E";
scope = {
field: "=field"
};
templateUrl = "";
controller = ["$scope","$sce","$compile", ($scope: any,$sce:ng.ISCEService, $compile : ng.ICompileService) => {
var controlHTML = "";
var jsonObj = "$scope.$parent.$parent.sheetModel.model." + eval("$scope.field.Property");
switch($scope.field.PropertyDetail.Type)
{
case "string":{
controlHTML = $compile("<input type='text' class='form-control' ng-model='"+jsonObj+"'></input>'")($scope)[0].outerHTML;
break;
}
}
//$scope.html = controlHTML;
$scope.html = $sce.trustAsHtml(controlHTML);
}];
controllerAs = "inputcontroller";
constructor(private $location: ng.ILocationService , private $sce:ng.ISCEService , private $compile : ng.ICompileService) {
var a : InputControl = this;
a.templateUrl=$sce.trustAsUrl("http://"+window.location.host +"/AngularApp/Templates/inputcontrol.html");
}
link = (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl: any, $compile : ng.ICompileService) => {
};
static factory(): ng.IDirectiveFactory {
const directive = ($location: ng.ILocationService , $sce : ng.ISCEService,$compile : ng.ICompileService) => new InputControl($location,$sce,$compile);
directive.$inject = ["$location","$sce","$compile"];
return directive;
}
}
angular.module("SheetApp").directive("inputControl", InputControl.factory());
ШАБЛОН HTML
<div class="form-group">
<label for="field.Property" ng-bind="field.PropertyDetail.Caption"></label>
<span ng-bind-html="html"></span>
INPUT GENerated :
При отладке он имеет значение, но не модель в элементе управления.
$scope.field.Property
равноInspection.InspectorName
, верно? Если да, то почему у васlabel for="field.Property"
тогда? Почему вы не можете просто использовать поле в качестве модели? - person mat3e   schedule 15.12.2015