在angularjs中添加另一个隔离元素

时间:2016-06-18 08:56:56

标签: angularjs

我使用不同的ngModels在基本元素之后添加一些元素,对一个输入的任何更改都会影响所有输入(ng-models是不同的)!!!

我该如何解决呢。

实际上我创建一个html字符串并编译它然后使用.after来添加元素。

但是当我添加2个或更多元素时,任何更改都会影响所有元素。

控制器:

   function makeElement() {
        var idName = "level" + vm.currentLevel + "";
        var idCss = "#" + idName + "";
        if (angular.element(idCss).length) {
            angular.element(idCss).remove();
        }

        setTimeout('', 1000);
        console.log("getChildren", vm);

        var htmlStr = angular.element(

            '<div id="'+ idName +'" class="row"> ' + 
                '<div class="col-xs-8"> ' + 
                    '<label class="vertical">{{vm.dataLevel[vm.currentLevel].Title}}</label> ' +
                    '<input type="text" id="level-' + vm.currentLevel + '-code" class="k-textbox quarter-width ltr" value="{{vm.dataLevel[vm.currentLevel].item.Code}}" disabled /> ' +
                    '<select id="data-level-' + vm.currentLevel + '" class="three-quarter-width" ng-hide="vm.isBusy" ' +
                            'kendo-drop-down-list '  +
                            'k-options="vm.dataLevel[vm.currentLevel]" ' +
                            'k-rebind ="vm.dataLevel[vm.currentLevel]"></select> ' +
                    '<span ng-show="vm.isBusy"><i class="fa fa-spinner fa-spin"></i></span> ' + 
                '</div> ' + 
                '<div class="col-xs-4 align-left" ng-show="!vm.isBusy"> ' +
                    '<label class="vertical transparent">1</label> ' + 
                    '<a kendo-button ng-click="vm.openActionDialog(1,0)"> ' +
                        '<i class="fa fa-plus fa-fw"></i> ' + 
                    '</a> ' +
                    '<a kendo-button data-ng-disabled="!vm.dataLevel[vm.currentLevel].item.Code" ng-click="vm.openActionDialog(2,0,vm.currentLevel0Item)"> ' +
                        '<i class=" fa fa-edit fa-fw"></i> ' +
                    '</a> ' +
                    '<a kendo-button data-ng-disabled="!vm.dataLevel[vm.currentLevel].item.Code" ng-click="vm.openActionDialog(3,0,vm.currentLevel0Item)"> ' +
                        '<i class="fa fa-trash-o fa-fw"></i> ' +
                    '</a> ' +
                    '<a kendo-button ng-click="vm.getData(0,0,true)"> ' +
                        '<i class="fa fa-refresh fa-fw"></i> ' +
                    '</a> ' +
                '</div> ' +
            '</div> <br />');

        return $compile(htmlStr)($scope);
    }

1 个答案:

答案 0 :(得分:0)

我发现问题是我的错误是将数据索引用作字符串。我之前写过:

'k-options="vm.dataLevel[vm.currentLevel]" '

但现在我的代码是:

'k-options="vm.dataLevel[' + vm.currentLevel + ']" '