小编Esa*_*ola的帖子

AngularJS中的"命名空间"服务

AngularJS如何处理服务名称之间的冲突?例如,如果我声明了两个模块,每个模块包含一个名为'foo'的服务.如果我想创建可重用模块或想避免与其他第三方模块发生冲突,那么"命名空间"服务的好方法是什么?

angularjs

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

AngularJS $超时功能没有在我的Jasmine规范中执行

我正在尝试用Jasma测试我的AngularJS控制器,使用Karma.但是$timeout在现实生活中运作良好的一个,会使我的测试崩溃.

控制器:

var Ctrl = function($scope, $timeout) {
  $scope.doStuff = function() {
    $timeout(function() {
      $scope.stuffDone = true;
    }, 250);
  };
};
Run Code Online (Sandbox Code Playgroud)

Jasmine它阻塞(在哪里$scope和控制器已正确初始化):

it('should do stuff', function() {
  runs(function() {
    $scope.doStuff();
  });
  waitsFor(function() { 
    return $scope.stuffDone; 
  }, 'Stuff should be done', 750);
  runs(function() {
    expect($scope.stuffDone).toBeTruthy();
  });
});
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中运行我的应用程序时,$timeout将执行函数并且$scope.stuffDone将为true.但在我的测试中,$timeout什么都不做,该函数永远不会被执行,并且Jasmine在超时750 ms后报告错误.这可能有什么问题?

jasmine angularjs

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

AngularJS:来自父控制器的Access指令的隔离范围

我想编写一个带有隔离范围的指令,但也想让该范围可用于父范围的控制器.我找到了这个解决方案

<div ng-controller="Main">
  <popupbutton directive-scope="popup"></popupbutton>
</div>

app.directive('popupbutton', [function() {
  return {
    restrict:   "E",
    scope:      {    
      directiveScope: "="
    },
    link:       function(sc, el, attrs) {
      sc.directiveScope = sc;
      sc.testvalue = 'foo';
    }
  };  
}]);

app.controller('Main', function($scope) {
  alert($scope.popup.testvalue);  // Where did the property 'popup' come from?!?
});
Run Code Online (Sandbox Code Playgroud)

Plunker.

我发现这有点难看,因为它涉及在HTML中编写属性,而在控制器的代码中,你无法分辨范围属性的来源.有一个更好的方法吗?

编辑:

此外,当运行控制器'Main'时,似乎$ scope.popup甚至不可用.指令的链接功能还没有执行?

angularjs

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

如何测试模块的运行块

我希望我的AngularJS应用程序发出http请求以从服务器检索用户信息或重定向到登录屏幕.我在我的应用程序主模块的运行块中实现了它.但是如何在运行块中测试代码呢?或者我应该在控制器中移动此初始化代码以使其可测试?我正在用Karma和Jasmine写我的测试.

任何帮助,将不胜感激!

angularjs

3
推荐指数
2
解决办法
3539
查看次数

标签 统计

angularjs ×4

jasmine ×1