我有一个网页,其中包含一些我无法编辑的
HTML元素.我想动态地将ng-model属性附加到这些属性,并让AngularJS将它们重新绑定到范围.我想要完成的一个简化示例可以找到
here
<script src="//code.jquery.com/jquery-2.1.0.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script>
function MyCtrl($scope) {
$scope.myModel1 = "Hi";
$scope.myModel2 = "there";
var myModel2 = angular.element("#myModel2");
//This won't work
myModel2.attr("ng-model","myModel2");
}
</script>
<div ng-app ng-controller="MyCtrl">
<input type="text" ng-model="myModel1"/>
<!-- I can't touch this -->
<input type="text" id="myModel2" />
</div>
解决方法
你需要使用$compile(
docs)
$compile(myModel2.attr("ng-model","myModel2"))($scope);
demo
当您加载页面时,angular会自动在HTML上使用$compile,这就是它如何知道分配哪些指令的元素.如果您只是像尝试一样更改属性,则角度不知道.你必须使用$compile.