角度函数在哪里被“存储”?

时间:2015-07-13 20:18:18

标签: javascript angularjs google-chrome

我不确定以下是否是浏览器问题或bug,如果有任何函数,如下所示,

$scope.editSomething= function(){
  alert("hello");
}

始终在开始时调用,如果我编辑某些内容,则网页会按预期执行(警告你好)。但是,除非我加载页面,否则我的断点永远不会达到这一点。

我的问题:范围是否存储了我的功能?或者我的调试器只是表现得很奇怪?

2 个答案:

答案 0 :(得分:0)

Your issue is how you are writing the Function. Writing it like this will make the function only executed when you call it:

https://jsfiddle.net/bgerhards/cu4wkaqf/

function Hello(something) {
 console.log(something);   
};

Hello("Hello World");

If you make a variable a function like you have, it will execute the function and put the return value in the variable

Hello2 = function() {
 return "Something Here";   
};

console.log("Hello2 Output: "+ Hello2());

答案 1 :(得分:0)

$ scope存储您放置的变量。

变量也可以存储函数。在您的情况下,您将匿名函数分配给名为editSomething的变量。

每次初始化控制器时,都会执行控制器内部的代码。如果将断点放在$scope.editSomething= function(){的行上,则每次控制器初始化时都会遇到断点(例如,在页面加载时)。

如果您想查看存储在editSomething变量中的匿名方法何时执行(例如,在模板中的HTML元素上放置ng-click=editSomething()然后单击它),那么您应该将断点放在alert("hello");行。