AngularJS:ng-repeat中的对象不显示对象更新

时间:2015-06-22 11:44:11

标签: angularjs

我有这个循环在屏幕上显示我想要的所有问题。我使用指令附加到此列表,这些更新显示正常。

    {{Questions}}

        <div id="items" style="border: 3px solid; border-radius:5px; border-color: #808080; min-height: 500px; padding: 10px;">
            <div question-type ng-repeat="Question in Questions track by $index"></div>
        </div>

然而,当我点击一个问题时,我会在页面的其他地方显示该问题的内容,并带有可编辑的字段,以便您进行修改。

您可以在上面的代码中看到我将问题json对象显示在循环上方的屏幕上,这正确地显示了我正在键入的更新,但循环的内容却没有。循环中的问题将保持原样,而不是更新。

任何想法为什么对象似乎在更新,但它对使用它的ng-repeat没有影响?

修改

这是我使用ng-repeat

的指令
app.directive('questionType', function ($http, $compile) {
    return {
        restrict: 'AE',
        link: function (scope, element, attr, model) {

            switch (scope.Question.inputType) {
                case 'checkbox':
                    //element.append('<input type="checkbox" ng-model="Question.checked"/><button ng-if="input.checked" >X</button>');
                    break;
                case 'text':
                    var strElm = '<div class="form-group" data-ng-click="selectProperties($index)"><label class="col-lg-12 control-label" style="text-align: left;">' + scope.Question.label + '</label><div class="col-lg-12"><input type="text" class="form-control" placeholder=' + scope.Question.placeholder + ' readonly></div></div>';
                    var compiledHtml = $compile(strElm)(scope);
                    element.append(compiledHtml);
                    break;
            }
        }
    };
});

第二次编辑

我没有正确绑定。得到了这条线 -

var strElm = '<div class="form-group" data-ng-click="selectProperties($index, obj.Questions)"><label class="col-lg-12 control-label" style="text-align: left;" >{{Question.label}}</label><div class="col-lg-12"><input type="text" class="form-control" placeholder=' + scope.Question.placeholder + ' readonly ng-model="Question.placeholder"></div></div>';

2 个答案:

答案 0 :(得分:1)

你的ng-repeat会创建一个孤立的范围。

将问题放在空对象中并使用它。

示例:

    Dim KonRes(3) As Integer
    Dim UserRes(3) As Integer
    Dim YelRed(3) As Integer

    KonRes(0) = 1
    KonRes(1) = 2
    KonRes(2) = 3
    KonRes(3) = 4

    UserRes(0) = 4
    UserRes(1) = 2
    UserRes(2) = 2
    UserRes(3) = 1

    Dim Uindex As Integer = 0
    For Each item In UserRes
        Dim Kindex As Integer = 0
        For Each i In KonRes
            If item = i Then
                If Kindex = Uindex Then
                    YelRed(Uindex) = 1
                Else
                    YelRed(Uindex) = 2
                End If
            End If
            Kindex += 1
        Next
        Uindex += 1
    Next

在HTML中,您必须在ng-repeat中将其引用为$scope.obj = {}; $scope.obj.Questions = your questions json.

答案 1 :(得分:0)

尝试更改您的代码:

<div ng-repeat="Question in Questions track by $index">
    <question-type question="Question"></question-type>
</div>

也改变你的指令定义