首页 > 解决方案 > 为动态创建的 HTML 元素使用 ng-model

问题描述

我已经动态创建了 div 元素,其中有一个按钮元素,所以我想通过 ng-model 使用它的值,但值没有到来。

我的代码是:

var url = "/api/chatBot/chatBot";
$http.post(url,data)
.success(function(data){
    $scope.messageToShow = data.messageText;
    $scope.forButtons = data.actions;
    console.log("Message ::", $scope.messageToShow);
    console.log("actions ::", $scope.forButtons[1].value);
    var x='';
    for(var i = 0 ; i<data.actions.length; i++) {
        x= x + "<a ng-model = 'buttons' class = 'btn btn-outline btn-primary btn-xs btn-rounded pull-right' value ="+$scope.forButtons[i].value+" ng-click = 'submitForButton()'>"+$scope.forButtons[i].text+"</a>"
    }
    var newEle = angular.element("<div class='message' ><a class='message-author' ng-model='author'> Bot </a>\
    <span class='message-content' ng-model='messageContent'>"+$scope.messageToShow+"\
    "+x+"</span> </div><br />");
    var target = document.getElementById('messageDiv');
    var temp = $compile(newEle)($scope);
    angular.element(target).append(temp);
    $scope.message = "";
}) .error(function(){
    console.log("ERROR in bot controller");
})


}

所以当我在做

console.log($scope.buttons) // its coming undefined.

所以我在哪里做错了。

谢谢

标签: javascripthtmlangularjs

解决方案


您应该$scope.buttons = ''事先在您的控制器上声明,之后,您可以将其用作 ng-model

你也可以试试ng-value ="+$scope.forButtons[i].value+"


推荐阅读