AngularJS:ng-model与dom元素的后期绑定

时间:2014-04-08 10:15:17

标签: javascript angularjs binding

我有一个网页,其中包含一些我无法编​​辑的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>

1 个答案:

答案 0 :(得分:13)

您需要使用$compiledocs

$compile(myModel2.attr("ng-model", "myModel2"))($scope);

demo

当您加载页面时,angular会自动在HTML上使用$compile,这就是它如何知道要分配哪些指令的元素。如果您只是像尝试一样更改属性,则角度不知道。您必须使用$compile