Родительское значение $scope не отображается в модели ng после компиляции html $ в директиве angular

Я пытаюсь сгенерировать 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 :

введите здесь описание изображения

При отладке он имеет значение, но не модель в элементе управления.

введите здесь описание изображения


person Shan Khan    schedule 14.12.2015    source источник
comment
Я не уверен в вашем случае. $scope.field.Property равно Inspection.InspectorName, верно? Если да, то почему у вас label for="field.Property" тогда? Почему вы не можете просто использовать поле в качестве модели?   -  person mat3e    schedule 15.12.2015
comment
yes $scope.field.Property равно Inspection.InspectorName. jsonObj — это строка. но я запускаю значение jsonObj в консоли, я получаю результат TEST, но там я не получу этот результат.   -  person Shan Khan    schedule 15.12.2015


Ответы (1)


он начал работать, когда я изменил строку с

var jsonObj = "$scope.$parent.$parent.sheetModel.model." + eval("$scope.field.Property");

to

var jsonObj = "$parent.$parent.sheetModel.model." + eval("$scope.field.Property");
person Shan Khan    schedule 17.12.2015