angular中,在controller里定义对象,var xx和$scope.xx的区别
如果一个对象不需要在页面中用到,
直接用var xx;
那么该对象的作用域有多大
9.25补充
先上代码:
app.controller('MainCtrl', function($scope) {
$scope.name = "x";
var name1 = 'xx';
$scope.foo = function() {
var name2 = 'xxx';
console.log(name1);
console.log(name2);
};
});
$scope
定义范围基本上明白了
那么
name2
范围呢?在foo这个函数内?
name1
的范围呢?
毁灭之格雷希尔
10 years, 3 months ago
Answers
Scope的定义大致如下(极简版):
// Generated by CoffeeScript 1.7.1
(function() {
var Scope;
Scope = (function() {
function Scope() {
this.$$watchers = [];
}
Scope.prototype.$watch = function(watcher, listener) {
return this.$$watchers.push({
watchFn: watcher,
listenrFn: listener
});
};
Scope.prototype.$digest = function() {
return this.$$wathcers.forEach(function(watcher) {
return watcher.watchFn();
});
};
return Scope;
})();
}).call(this);
在Scope外定义的内容没法watch和digest。
——————————————————————————9.25补充
楼主后来问的问题就跟angular无关了,属于变量作用域的问题。匿名函数内的定义的变量只在该函数内起作用。
小狐狸D摇篮
answered 10 years, 3 months ago