相关疑难解决方法(0)

AngularJS $ watch vs $ watchCollection:哪个性能更好?

对于观看的对象范围内的变量,是$scope.$watchobjectEquality设置为true或$scope.$watchCollection更好?

对于一个$scope对象变量(如15点的属性,一些嵌套2级深)与输入元件和更新ng-model在视图中,是怎样坏$scope.$watchobjectEquality设置为true?这是一件要避免的大事吗?

$watchCollection更好的解决方案吗?

我正在寻找轻松获胜以提高我的AngularJS App的性能(我仍然坚持v1.2.2).

  // ctrl scope var
  $scope.filters = {
    name: '',
    info: {test: '', foo: '', bar: ''},
    yep: ''
    // etc ...
  }

  // ctrl watch ?
  $scope.$watch('filters', function(newVal, oldVal) {
    if(newVal !== oldVal) {
      // call with updated filters
    }
  }, true);

  // or ctrl watch collection ?
  $scope.$watchCollection('filters', function(newVal, oldVal) {
    if(newVal !== oldVal) {
      // …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-scope angularjs-watch

40
推荐指数
2
解决办法
5万
查看次数

控制器间通信,角度方式

我试图找出在控制器/指令之间共享属性或状态的"首选"或"角度方式".有几种方法可以实现这一点,但我希望保持最佳实践.以下是一些如何实现此功能的平庸示例:


1.使用$ scope.$ watch

// The parent controller/scope
angular.module('myModule').controller('parentController', ['$scope', function($scope) {
    $scope.state = {
        myProperty: 'someState'; // Default value to be changed by some DOM element
    };
}]);

// The child controller/scope.
angular.module('myModule').controller('childController', ['$scope', function($scope) {
    $scope.$watch('state.myProperty', function (newVal) {
        // Do some action here on state change
    });
}]);
Run Code Online (Sandbox Code Playgroud)

编辑:根据下面的答案,这是不好的做法,应该避免.它是不可测试的并且放置了不需要的DOM依赖性.


2.使用$ broadcast

// The parent controller
angular.module('myModule').controller('parentController', ['$scope', function($scope) {
    var myProperty = 'someState';
    $scope.setState = function (state) {
        myProperty = state; // Set by some other …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-scope

4
推荐指数
1
解决办法
2584
查看次数

bindToController如何摆脱所有$ scope($ scope.$ on)

我正在使用controllerAs和bindToController"pattern"在Angular 1.4.12上实现AngularJS指令,以便拥有一个不依赖于$ scope的干净控制器.但是我仍然觉得很难摆脱这些线上的$ scope:

$scope.$on( '$destroy', function() {...} );
$scope.$on( '$stateChangeSuccess', function() {} );
Run Code Online (Sandbox Code Playgroud)

知道如何处理这种情况吗?

谢谢

angularjs angularjs-directive

0
推荐指数
1
解决办法
372
查看次数