【问题标题】:Using $scope.$apply in TypeScript when using Controller as vm syntax将 Controller 用作 vm 语法时在 TypeScript 中使用 $scope.$apply
【发布时间】:2016-02-23 04:47:20
【问题描述】:

在我当前的项目中,我正在使用 TypeScript 开发 Angular。我在路由中使用“Controller as vm”语法,因此我没有在控制器中注入范围服务。

我正在做一些 jQuery 编码,之后我需要做 $scope.$apply() 来运行 Angular 摘要循环。有没有办法在不将$scope 变量注入控制器的情况下做到这一点?

我相信如果我注入 $scope 变量,它将破坏使用“Controller as vm”语法的目的(如果我错了,请纠正我)。

【问题讨论】:

  • 注入$scope。它不会扼杀vm 的目的。
  • 不,以 Controller 作为语法,$scope 只是一个被注入的依赖项,没有错。
  • 当你需要应用时应该注入$scope。但是您可以将 $scope 用作服务,而不要将模型附加到它上面。事实上,注入 Angular 控制器的原因只有一个:当您需要 $scope 服务方法时,如 $apply 或 $watch

标签: javascript angularjs typescript


【解决方案1】:

带有 vm 的样式指南允许您将 $scope 用于某些目的,例如初始化观察者和运行 diggest 循环。

只是为了记住每个人:) :https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

你可以通过你的虚拟机(父作用域和类似的东西)来处理,但是直接使用 $scope 来处理这样的用途要干净得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2015-01-26
    相关资源
    最近更新 更多