当范围值更新时,angularjs指令不会更新

时间:2015-11-03 01:24:37

标签: angularjs directive

No Crossing Zone
  

块引用

当我点击按钮时,未定义的年龄没有得到更新。谁能帮助我看看这个问题

当我点击按钮时,未定义的年龄没有得到更新。谁能帮助我看看这个问题

2 个答案:

答案 0 :(得分:0)

我一直在等着,看看有人会比我更好,更权威地回答这个问题。我认为问题在于,范围更新不像您的更改那样深入到数据结构中。我认为您需要在$resultSet = $mysqli->query("SELECT userID FROM users WHERE pending = ( SELECT MIN(pending) FROM users )"); if($resultSet->num_rows > 0) { //We use a while loop here, in the event that there are multiple rows while($row = $resultSet->fetch_assoc()) { echo $row["userID"]; //Accessing the rows index at "userID" } } 上实施深度观察("按价值观看")。请参阅https://docs.angularjs.org/guide/scope,向下滚动到"控制器和范围"部分。

答案 1 :(得分:0)

您没有使用$scope.changePerson方法正确更新您的收藏集。 persons也是一个数组,它应该是

$scope.changePerson = function () {
    vm.trxs[0]['persons'][0]['age'] = 33; //look ['persons'][0] 
    vm.trxs[0]['acctKey'] = 123;
}

正如@Ed Staub建议您需要 $watch 您的收藏品以传播更多的模型更改,例如

app.directive('trxTablePersonTd', function ($compile) {

    return {
        scope: { persons: '=persons' },
        restrict: 'A',
        link: link,
        replace: false,
    }

    function link(scope, elem, attrs) {
        if (scope.persons) {
            scope.$watch('persons', function () {
                var html = scope.persons.map(function (person, index) {
                    return '<td>' + person.name + '</td>' + '<td>' + (person.age ? person.age : "") + '</td>';
                });

                elem.empty().append(html.join(''));
                $compile(elem.contents())(scope);

            }, true);
        }
    }
});

此外,如果您的指令中除了html之外没有其他td,我认为您根本不需要指令,只需使用{{1}喜欢

ng-repeat