从AngularJS中的Controller返回范围

时间:2015-03-26 10:57:26

标签: angularjs angularjs-scope angularjs-controller angularjs-decorator

我想将Controller的返回值(总是一个对象)绑定到范围。

而不是:

$scope.test = "test"
像这样:

return {
  test: "test"
}

所以我可以在我的视图中使用它,如

{{ test }}

我想使用它的原因是因为我的指令,服务等仍然像这样工作。

(function(module) {

  var SomeFactory = function SomeFactory(

  ) {

    var test = 2;

    var getTest = function getTest() {
      return test;
    }

    return {
      getTest : getTest
    }
  }

  module.factory('someFactory', [
    SomeFactory
  ])

})(angular.module('app'))

所以我的控制器应该是这样的:

(function(module) {

  var SomeController = function SomeController(
    $state
  ) {

    var loggedIn = true;

    var isLoggedIn = function isLoggedIn() {
      return loggedIn;
    }

    return {
      isLoggedIn : isLoggedIn
    }
  }

  module.controller('SomeController', [
    '$state',
    SomeController
  ])

})(angular.module('app'))

有人可以提供帮助。

另一种解决方案,如:

$scope.add({
  test: 2,
  do: function() {}
})

也没问题:)

感谢您的帮助

编辑: 我只想返回一个对象{},这个对象可以通过装饰器或其他东西访问

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式扩展控制器中的范围:

angular
  .module("myModule", [])
  .controller("MyController", ["$scope", function($scope) {
      angular.extend(
          $scope,
          {
              test: 2,
              do: function() { return 3;}
          }
      );
  }]);

然后像这样使用它

<div ng-controller="MyController">
  {{test}}
  {{do()}}
</div>

Plunker with an example