Javascript AngularJS双向绑定
我在Javascript AngularJS双向绑定,javascript,angularjs,angularjs-scope,dom-events,Javascript,Angularjs,Angularjs Scope,Dom Events,我在AngularJS中遇到双向绑定问题。在我的HTML中,我有: 模型 ... 在JavaScript方面,我有: (函数(){ var app=angular.module('creation'、['validation'、'link']); app.controller('CreationController',['$scope',函数($scope){ $scope.data={}; $scope.data.model='hello'; ... 为什么当我呈现HTML页面时,$sc
AngularJS
中遇到双向绑定问题。在我的HTML
中,我有:
模型
...
在JavaScript
方面,我有:
(函数(){
var app=angular.module('creation'、['validation'、'link']);
app.controller('CreationController',['$scope',函数($scope){
$scope.data={};
$scope.data.model='hello';
...
为什么当我呈现
HTML
页面时,$scope.data.model
没有显示hello?相反,它没有显示任何内容,当我最终在输入字段中输入一些内容时,它会更新$scope.data.model
这是因为您在$scope
上设置了数据模型,但在HTML中您引用了它在控制器实例cCtrl
下进行ncing。尝试在html中使用ng model=data.model
。实际上,“controller as”语法非常有用且易于理解。
我更愿意保留它,因为您可以根据需要隔离数据,并以更干净的方式使用它
代码的问题是必须将数据对象绑定到此,而不是绑定到$scope
(function() {
var app = angular.module('creation', ['validation', 'link']);
app.controller('CreationController', [function() {
// You can use an object to refer to *this* (vm stands for 'ViewModel').
var vm = this;
vm.data = {};
vm.data.model = 'hello';
// or just have vm.data = {model: 'hello'};
...
然后在模板中使用它,就像您使用过它一样
除此之外,没有注入$scope**,除非您希望使用特定于angular的内容,如digest或watch,或从父作用域/父控制器继承
这里还有一个很好的angular样式指南,解释了其他概念: