首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何推送html元素

如何推送html元素
EN

Stack Overflow用户
提问于 2015-03-09 17:37:03
回答 3查看 1.2K关注 0票数 0

首先,iam使用AngularJS v1.3.14

我尝试pushlabelinputbutton html元素

下面是我的html代码:

代码语言:javascript
运行
复制
<div class="container" ng-controller="ctrl" >
<div class="form-inline" ng-repeat="c in controls">
    <label class="control-label">Name:</label>
    <input class="form-control">
    <button class="btn btn-danger">X</button>
</div>
<button class="btn btn-primary" ng-click="add();">+</button>

和脚本代码:

代码语言:javascript
运行
复制
 angular.module("app", [])
        .controller("ctrl", function ($scope) {
            $scope.controls=[];
            $scope.add = function () {
                $scope.controls.push({
                 ...
                })
            };
        });

我的问题是:如何使用controls id push div

EN

回答 3

Stack Overflow用户

发布于 2015-03-09 17:52:55

尝试一下,您需要动态地将html控件添加到数组中,然后使用ng-repeat重新呈现数组的对象值

Html代码

代码语言:javascript
运行
复制
  <div class="form-inline" ng-repeat="c in controls">

                        <div ng-bind-html="c.htmlValue | to_trusted"></div>
                    </div>
                    <button class="btn btn-primary" ng-click="add();">+</button>

Js代码

代码语言:javascript
运行
复制
    angular.module("app", [])
            .controller("ctrl", function ($scope) {
                $scope.controls=[];
                $scope.add = function () {
        var stringValue="<label class=\'control-label\'>Name:</label><input class=\'form-control\'><button class=\'btn btn-danger\'>X</button>"
        $scope.controls.push({ "htmlValue": stringValue })
    };
            }).filter('to_trusted', ['$sce', function ($sce) {
    return function(text) {
        return $sce.trustAsHtml(text);
    };
}]);

中查看此工作代码

Plunker

演示图片

票数 0
EN

Stack Overflow用户

发布于 2015-03-09 17:58:05

按钮不在控制器的作用域内。在底部,你可以找到一个链接与PLNKR演示的基本用途。

代码语言:javascript
运行
复制
angular.module("app", [])
        .controller("ctrl", function ($scope) {
            $scope.controls=[];
            $scope.add = function () {
                $scope.controls.push('')
            };
        });

HTML:

代码语言:javascript
运行
复制
  <body ng-app="app">
    <div ng-controller="ctrl" >
    <div class="container" >
<div class="form-inline" ng-repeat="c in controls">
    <label class="control-label">Name:</label>
    <input class="form-control" ng-model="c">
    <button class="btn btn-danger">X</button>
    </div>
</div>
<button class="btn btn-primary" ng-click="add();">+</button>
</div>
  </body>

Example

票数 0
EN

Stack Overflow用户

发布于 2015-03-09 19:39:06

最后我找到了解决方案:

html:

代码语言:javascript
运行
复制
<div class="container" ng-controller="ctrl">
<div class="form-inline" ng-repeat="todo in todos track by $index">
    <label class="control-label">Name:</label>
    <input type="text" class="form-control" ng-model="todos[$index]">
    <button class="btn btn-danger" ng-click="remove($index);">X</button>
</div>
<div class="form-inline">
    <button class="btn btn-primary" ng-click="add();">+</button>
</div>

脚本:

代码语言:javascript
运行
复制
        angular.module('app', [])
        .controller('ctrl', function ($scope) {
            $scope.todos = [''];
            $scope.add = function () {
                $scope.todos.push({});
                console.log($scope.todos);
            };
            $scope.remove = function (index) {
                $scope.todos.splice(index, 1);
            };
        });

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28938794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档