角度是否与ruby的模块mixin具有相似的概念?

时间:2015-02-01 02:36:49

标签: angularjs

我想拥有一个基础工厂(或服务),其他服务可以共享方法。

这是否可能有角度,如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

工作人员:

http://plnkr.co/edit/guObDjeLUYCEsp4omusX?p=preview

阅读本文:

https://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

工厂和服务只是功能,因此香草javascript中的相同模式同样适用。

app.controller('MainCtrl', function($scope, foobar) {
  $scope.name = 'World';
  $scope.fb = new foobar();
});

app.factory('foo', function() {
  var Foo = function() {};
  Foo.prototype = {
    doFoo: function(x) {
      return x + 3;
    }
  }
  return Foo;
});

app.factory('bar', function() {
  var Bar = function() {};
  Bar.prototype = {
    doBar: function(y) {
      return y * 2;
    }
  }
  return Bar;
});

app.factory('foobar', function(foo, bar) {
  var FooBar = function() {};
  angular.extend(FooBar.prototype, foo.prototype);
  angular.extend(FooBar.prototype, bar.prototype);

  // Anything else you want to do
  // ...

  return FooBar;
});

一个模板:

  <body ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>
    <p>Foo {{fb.doFoo(1)}}</p>
    <p>Bar {{fb.doBar(4)}}</p>
  </body>