使用输入标记在AngularJS中无法使用数据绑定

时间:2015-02-04 16:18:26

标签: javascript angularjs angularjs-directive angularjs-scope

下面是我的angularjs代码, 当我尝试在文本框中输入任何文本时,它不会出现在绑定中。

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="js/angular.js"></script>
    <script type="text/javascript">
    var app = angular.module('myApp', []);
    app.controller('cont', ['$scope', function($scope) {
    }]);
    </script>
</head>
<body ng-app="myApp">
    <input type="text" ng-bind="user"></input>
    <p>{{user}}</p>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

您需要使用ng-model指令进行双向绑定。 ng-bind只是单向方式,在摘要周期发生时用数据(模型值)更新绑定元素。更新文本框时没有ng-model,就不会有任何摘要周期。 Angular有directive definition for types like input和其他表单控件,需要可选的ng-model指令。并且这些元素指令仅在目标元素上change/input时才注册<input type="text" ng-model="user" name="user"></input> <p>{{user}}</p> 等事件。当你拥有它们时,它使用ng-model控制器来设置视图值,模型值并在gets the optional ng-model controller时触发摘要周期。当然,对于新的角度版本,您可以在元素级别或全局级别设置that event occurs,以指定何时需要更新模型值(和表单验证)。

所以: -

ng-controller="cont"

虽然在您的情况下不是问题,但您错过了<body ng-app="myApp"> <div ng-controller="cont"> <input type="text" ng-model="user" name="user"></input> <p>{{user}}</p> </div> </body> 的使用。如果没有它,所有属性都将附加到您的案例中的rootScope。所以可能是:

{{1}}