【问题标题】:Ruby on Rails and angularJS: Can someone explain the usage and syntax plsRuby on Rails 和 angularJS:有人能解释一下用法和语法吗?
【发布时间】:2016-01-25 06:44:33
【问题描述】:

angular.module('MyModule').controller('MyController', ['$scope', '$timeout', 'MyService', 'MyOtherService', function ($scope, $timeout, MyService, MyOtherService) {
 <!-- some code -->
}])

我是 ROR 框架的新手,我想弄清楚这段代码 sn-p 试图做什么。还有角度服务是如何工作的。有没有办法在不同于它定义的模块的另一个模块中访问服务。

【问题讨论】:

    标签: javascript ruby-on-rails ruby angularjs syntax


    【解决方案1】:

    这段代码纯粹是angularjs.. 没有任何关于它的RoR.. 我会逐字描述。

    1. angular 这是对全局 angular 对象的引用。
    2. .module 调用获取/启动 application 的一个组件,您可能会在 html/erb/haml 文件中将其作为标记的属性 (ng-app) 注意到。这里是 getting 名为 MyModule 的模块。
    3. .controller 调用在组件“MyModule”上创建/启动一个控制器,对于初学者级别,它需要 2 个参数,第一个是 controller(在您的情况下为 MyController)的名称,它将通过它作为地址。第二个是controllerfunction
    4. array 你看到的第二个参数可能有点棘手,Angular 使用它来将依赖注入到controller 函数中,第一个n-1 元素是组件的名称,如服务、工厂..等你想在控制器内部使用。然后将这些作为参数传递到您的控制器函数中。

    【讨论】:

    • 有没有办法在不同于它定义的模块的另一个模块中访问服务?
    • 嗯,这是一个相当棘手的问题.. dependency 注入是这样做的方法..
    • @Dreamer 如果你能告诉我一个用例,我可能会更好地帮助你。
    • 我有两个模块,比如 Mod1 和 Mod2。 Mod2 中定义了 controller2、service2。现在我想在 Mod1 中使用 service2。我尝试将服务直接注入 Mod1 的控制器。但是它破坏了正在使用 Mod1 控制器的页面。
    • @Dreamer,是的,你可以很容易地做到这一点......看看这个plnkr.co/edit/Typ1VrA3yqv6eILkW6Va?p=preview
    【解决方案2】:

    这个 sn-p 是纯 AngularJS 代码。

    angular.module('MyModule')
    

    这部分创建模块。

    (您可以在此处阅读有关模块的信息:https://docs.angularjs.org/guide/module

    controller('MyController', ['$scope', '$timeout', 'MyService', 'MyOtherService', function
    

    这部分创建控制器。

    (关于控制器:https://docs.angularjs.org/guide/controller

    并在其中注入服务:'$scope'、'$timeout'、'MyService'、'MyOtherService'

    (关于依赖注入:https://docs.angularjs.org/guide/di

    【讨论】:

    • 有没有办法在不同于它定义的模块的另一个模块中访问服务?
    • 如果在模块中声明的服务是这样的: angular.module("TestModule").factory("SomeService", function(){});然后你可以像这样在另一个模块中使用它: angular.module("AnotherModule",["TestModule"]).controller("MyController",["SomeService",function(someService){});
    • 它被声明为:angular.module("TestModule").service("SomeService", function(){}))
    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2019-01-07
    • 2011-08-24
    • 2020-09-09
    相关资源
    最近更新 更多