AngularJS作用域属性未定义
AngularJS scope property undefined
我是AngularJS的新手,我正在努力了解它是如何管理作用域的。我可能在下面不恰当地描述了一些概念,但根据文档,$scope
是一个引用应用程序模型的对象。如果我创建一个简单的HTML元素,比如
<div data-ng-controller="MyController">
<input type="text" data-ng-model="username">
</div>
它指定了data-ng-model
指令,并用属性"username"填充"应用程序模型"(作用域),我相信它是对HTML元素输入的引用。当我试图在我的控制器代码中记录用户名的值时,我得到了未定义。为什么它没有定义?AngularJS没有创建变量"username"并将其添加到作用域对象中吗
我的控制器代码是这样的:
angular.module('scopeExample', [])
.controller('MyController', ['$scope', $log, function($scope, $log) {
$log.log($scope.username) // produces undefined
}]);
当我将username属性添加到控制器中的作用域时,会定义该属性,并且不存在任何问题,即
angular.module('scopeExample', [])
.controller('MyController', ['$scope', $log, function($scope, $log) {
$scope.username = ''; // no problem
$log.log($scope.username) // produces undefined
}]);
有人能向我解释一下吗?我已经找了一段时间了,我被这一切弄糊涂了。此外,如果我在描述中对一些概念贴错了标签,如果你也能纠正我,我将不胜感激。
ng-model
指令用于声明将包含范围数据的Javascript对象。在这种情况下,您将其设置为一个名为username
的对象。这是$scope
变量将绑定到的对象。这就是$scope.username
未定义的原因。把$scope
看作是username
的别名。这也是为什么如果将属性添加到username
,则可以从$scope
访问它。
由于范围是Angular的中心,您应该看看https://docs.angularjs.org/guide/scope介绍如何使用作用域以及在使用指令时继承如何影响作用域。
这是因为您正试图将dom元素附加到一个未实例化的对象,请改为查看ng-bind。
之所以会发生这种情况,是因为在初始化控制器时,作用域中的username值尚未定义,并且您只打印初始值。这就是为什么您在第二个示例中得到了正确的值。看看这个:http://jsfiddle.net/pratikfiddlejs/HB7LU/21096/
我在用户名上附加了一个手表,这样每当它更改时,更改后的值都会记录在控制台中
myApp.controller('MyController', ['$scope', '$log', function($scope, $log) {
$scope.$watch('username', function(newValue) {
if (newValue !== undefined)
$log.log($scope.username)
})
}]);
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性