在 AngularJS 中从 Controller 返回范围

Returning scope from Controller in AngularJS

我想将 Controller 的 return 值(始终是一个对象)绑定到范围。

而不是:

$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() {}
})

也可以:)

感谢您的帮助

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

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

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