角。生成指令内部指令。我的范围在哪里?

时间:2014-04-14 20:26:01

标签: javascript html angularjs angularjs-directive angularjs-scope

我试图在expressionSelect指令中生成多个expressionAuthoring指令,在这种情况下,只需单击一下即可。我可以显示expressionSelect模板,但是我的范围内没有任何内容可以随附。我已经搜索并查看了各种示例/类似的问题,但是我没有能够直接从解决方案中获取并自己开始工作。想法?

我没有使用此处显示的控制器

app.directive('expressionAuthoring', ['$compile', function (compile) {
    return {
        restrict: 'E',
        template: '<div></div>',
        link: function (scope, element, attrs) {

            element.bind('click', function () {
                var selection = angular.element(document.createElement('expression-select'));
                var el = compile(selection)(scope);
                element.append(el);
            });
        }
    };
}]);

app.directive('expressionSelect', [ function () {
    return {
        restrict: 'E',
        template: '<select ng-model="expressionSelect" ng-options="e.name for e in expressionSelect"></select>',
        link: function (scope, element, attrs) {

            scope.expressionSelect = [
                { name: 'TestName1', value: 'TestValue1' },
                { name: 'TestName2', value: 'TestValue2' },
                { name: 'TestName3', value: 'TestValue3' }
            ];
        }
    };
}]);

当我只是将<expression-select></expression-select>放在我的html中 enter image description here


当我在父母的父母身上生成它时指令

enter image description here

1 个答案:

答案 0 :(得分:1)

对于任何好奇的人,我都可以通过添加scope.$apply();

来实现这一目标
element.bind('click', function () {
    var selection = angular.element(document.createElement('expression-select'));
    var el = compile(selection)(scope);
    scope.$apply();
    element.append(el);
});