angularJS $范围变量

时间:2015-07-31 11:41:42

标签: javascript angularjs performance angularjs-scope

我的$ scope angularJS中有两种类型的变量。

1)。 $ scope.name,$ scope.title - 这些绑定到两个输入框(这些是绑定到UI html代码)。

2)。 $ scope.sum,$ scope.difference - 这些变量在内部使用JS代码,我需要它们作为全局变量来访问不同的函数。

问题: - $ scope。$ watch函数将针对第二种情况的变量运行,这些类型的变量对我的页面性能产生了不良影响。

3 个答案:

答案 0 :(得分:0)

$ scope中的变量可以通过out(在diff函数中)访问控制器。如果要在另一个控制器中使用这些变量,可以使用service / factory在diff控制器中共享范围变量。

答案 1 :(得分:0)

这取决于你的表达方式。但是,永远不要看一个昂贵的表达,因为angularjs会多次评估,它必然会对你的应用程序性能产生非常不利的影响。

通常,在出现性能问题时,有必要优化应用程序。在大多数情况下,一切都很顺利,并且不希望不必要地使应用程序复杂化。

此外,您可以使用单向数据绑定,其中表达式以::开头。在第一次消化后,表达式将在稳定后停止重新计算。

答案 2 :(得分:0)

如果这些功能与角度无关,您可以使用以下内容 只需在页面中声明一个全局变量,并将其值分配给该模态

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.globalVariable = "something";
  globalVariable = $scope.globalVariable;
});

var globalVariable;

function externalFunction(){
  alert(globalVariable);
}

此处Plunker

如果这些功能在另一个控制器内,您可以使用服务或工厂在控制器之间共享信息 有关服务和工厂,请参阅此链接

AngularJS : Factory and Service?