Возврат области из Контроллера в AngularJS
Я хочу привязать возвращаемое значение (всегда объект) контроллера к области видимости.
вместо:
$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 ответ
Решение
Вы можете расширить свою область действия в контроллере следующим образом:
angular
.module("myModule", [])
.controller("MyController", ["$scope", function($scope) {
angular.extend(
$scope,
{
test: 2,
do: function() { return 3;}
}
);
}]);
а затем использовать это так
<div ng-controller="MyController">
{{test}}
{{do()}}
</div>