在一个函数内的AngularJS应用程序中,该函数再次位于Controller内部, 创建变量时最好的方法是什么。
通常使用var
关键字
function getAnswer() {
//Some code here
var persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
//Some other code here
return persistedDateValue;
}
将其添加到控制器范围
function getDateAnswer() {
//Some code here
ctrl.persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
//Some other code here
return ctrl.persistedDateValue;
}
此处ctrl
是控制器,与指令controllerAs: 'ctrl',
一样。
我的不足之处是选项1更好,因为除了这个函数之外我们不需要这个变量。
请建议。
答案 0 :(得分:2)
我同意ZSnake的回答,但是如果您确实需要在视图的其余控制器中提供此变量,那么您将需要
.controler('ControllerName', function() {
var _this = this;
function getDateAnswer() {
//Some code here
_this.persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
}
答案 1 :(得分:1)
最佳做法是选项1,如果如您所说,您不会在其他地方使用该变量。这样就可以避免在示波器上放置未使用的数据。
答案 2 :(得分:0)
Javascript对此非常宽容。如果您使用更严格的语言作为C或其任何变体,则无法在第二个选项中执行您所公开的操作。 这种从外部作用域(从函数外部)访问变量的方式被称为“闭包”,并且在某些情况下可能会有所帮助,但是肯定不会在你暴露的那个中,这只会弄乱你的代码,因为这个函数本身可以通过它的结果以“正常”方式返回它的结果,保持编程科学最重要的原则之一:关注点分离(朋友的SoC)
坚持选择1