首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ng-bind-html分配表单?

使用ng-bind-html分配表单?
EN

Stack Overflow用户
提问于 2014-06-11 05:33:14
回答 1查看 619关注 0票数 0

我想单击一个按钮,将变量替换为表单。我该怎么做呢?

JavaScript

代码语言:javascript
复制
var MainCtrl = angular.module('mainCtrl', []);

MainCtrl.controller('MainCtrl', function ($scope) {
  $scope.bar = 'Foo';
  $scope.foo = function(){
    $scope.bar = '<form class="form-inline" role="form">   <div class="form-group">     <label class="sr-only" for="exampleInputEmail2">Email address</label>     <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">   </div>   <div class="form-group">     <label class="sr-only" for="exampleInputPassword2">Password</label>     <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">   </div>   <div class="checkbox">     <label>       <input type="checkbox"> Remember me     </label>   </div>   <button type="submit" class="btn btn-default">Sign in</button> </form>';
  }
});

var fooApp = angular.module(
    'fooApp', ['ngSanitize', 'mainCtrl'];
);

HTML

代码语言:javascript
复制
  <body ng-app='fooApp' ng-controller="MainCtrl">
    <div ng-bind-html="bar"></div>
    <button class="btn" ng-click="foo()">Change bar to form</button>
  </body>

Plnkr:http://plnkr.co/edit/TQLbVWnfF9G0LVg9tiJl

EN

回答 1

Stack Overflow用户

发布于 2014-06-11 05:50:37

这不是一种非常有角度的方式。

一般来说,您的控制器不应该包含任何标记,也不应该直接与DOM交互。

我建议设置一个变量来确定按钮是否被单击,然后使用ngShow和ngHide有条件地显示内容或表单。

下面是一个例子:

HTML:

代码语言:javascript
复制
  <body ng-app='fooApp' ng-controller="MainCtrl">
    <div ng-hide="showForm">Foo</div>
    <form class="form-inline" role="form" ng-show="showForm">   <div class="form-group">     <label class="sr-only" for="exampleInputEmail2">Email address</label>     <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">   </div>   <div class="form-group">     <label class="sr-only" for="exampleInputPassword2">Password</label>     <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">   </div>   <div class="checkbox">     <label>       <input type="checkbox"> Remember me     </label>   </div>   <button type="submit" class="btn btn-default">Sign in</button></form>

    <button class="btn" ng-click="foo()">Change bar to form</button>
  </body>

JS:

代码语言:javascript
复制
MainCtrl.controller('MainCtrl', function ($scope) {
  $scope.showForm = false;
  $scope.foo = function() {
    $scope.showForm = true;
  }
});

这是Plunker

如果满足您的需求,请让我知道。有很多方法可以避免在你的控制器中使用标记。

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

https://stackoverflow.com/questions/24151209

复制
相关文章

相似问题

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