javascript-如何在运行时创建的html对象添加ng-model
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何在运行时创建的html对象添加ng-model,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1490字,纯文字阅读大概需要3分钟。
内容图文
我有这样一个简单的html形式
<div ng-app="app">
<form action="" ng-controller="testController" id="parent">
</form>
</div>
现在我想从javascript添加一个输入字段
var app = angular.module('app',[]);
app.controller('testController',testController);
function testController($scope){
var input = document.createElement('input');
var form = document.getElementById('parent');
input.setAttribute("type","number");
input.setAttribute("id","testId");
input.setAttribute("name", "test");
input.setAttribute("ng-model","test");
form.appendChild(input);
}
输入字段也会按预期生成
<input type="number" id="testId" name="test" ng-model="test">
但是此输入字段和$scope.test之间的ng-model无法正常工作.
解决方法:
重要提示:您不应在cotroller中进行dom操纵,而需要使用指令来执行此操作.
也就是说,即使在指令中,如果要创建动态元素,也需要对其进行编译以将角度行为应用于该元素.
var app = angular.module('app', [], function() {})
app.controller('testController', ['$scope', '$compile', testController]);
function testController($scope, $compile) {
var input = document.createElement('input');
var form = document.getElementById('parent');
input.setAttribute("type", "number");
input.setAttribute("id", "testId");
input.setAttribute("name", "test");
input.setAttribute("ng-model", "test");
$compile(input)($scope)
form.appendChild(input);
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<form action="" ng-controller="testController" id="parent">
<div>test: {{test}}</div>
</form>
</div>
内容总结
以上是互联网集市为您收集整理的javascript-如何在运行时创建的html对象添加ng-model全部内容,希望文章能够帮你解决javascript-如何在运行时创建的html对象添加ng-model所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。