【问题标题】:Returning scope from Controller in AngularJS从 AngularJS 中的控制器返回范围
【发布时间】:2015-05-30 08:45:27
【问题描述】:

我想将 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() {}
})

也可以:)

感谢您的帮助

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

【问题讨论】:

  • 抱歉,问题出在哪里?你能给我们提供一个你做过的示例代码吗? :)
  • 问题中有示例代码。在我的控制器中,我希望返回的对象通过范围。所以我必须装饰控制器或装饰范围,但我不知道如何。

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


【解决方案1】:

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

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

【讨论】:

  • 好的,这是另一种解决方案。当没有人有其他想法时,我会更喜欢这个解决方案。但我真的很想返回一个对象。装饰器或其他东西将获取这个返回对象并将其传递给范围,但我不知道如何以及在哪个方法、位置等上。我必须这样做。我只是角度的中间人
  • angular.extend($scope, { test: 2, do: function() { return 3;} });
  • 这行代码我想要在每个控制器和控制器中我只返回 => { test: 2, do: function() { return 3;} }
  • 我不认为这是可能的。您只能装饰控制器并将方法“add”添加到 $scope。请在此处查看示例plnkr.co/edit/oyWkMmMXKkzncd2kotl6?p=preview。但老实说,我不喜欢这种做法。
  • 在我看来,这会带来一些意想不到的行为,因为没有人期望 $scope 会被其他方法扩展。可能需要花费数小时进行调试才能弄清楚发生了什么。
猜你喜欢
  • 2014-10-22
  • 1970-01-01
  • 2016-01-21
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2018-08-30
  • 1970-01-01
相关资源
最近更新 更多