2014-09-02 2 views
2

Я поднимаюсь на свою кривую обучения в angular.js и пытаюсь понять, куда положить все.Поделиться моделью между контроллерами

В этом случае я хочу знать, лучше ли использовать службы для совместного использования модели между контроллерами.

var app = angular.module('module', []) 

.factory('shared', ['$http', function ($http) { 
    var factory = { 
    "title" : "Shared Title 2" 
    }; 
    factory.action = function() { 
    // do something with this.title; 
    } 
    return factory; 
}]) 

.controller('MainCtrl', ['$scope','shared', function($scope, shared) { 
    $scope.shared = shared; 
}]) 

.controller('SecondaryCtrl', ['$scope','shared', function($scope, shared) { 
    $scope.shared = shared; 
}]); 

minimal example:

'мышление в угловой': Это хорошая практика, чтобы разделить модель, как это?

+0

Я думаю, что вы на правильном пути. Если вы хотите поделиться данными или поведением, вы должны использовать сервис или фабрику. – nacholibre

ответ

2

Настоятельно рекомендую использовать рецепт Сервиса для чего-то подобного. Кроме того, не просто создавайте службу, которая предоставляет модель в качестве услуги. т.е. Dont сделать это:

.service('UserService', function(){ 

    return { 
    changePassword: ... 
    updateUsername: ... 
    addEmail: ... 
    }; 

}); 

Вместо этого пусть сервис будет интерфейс для взаимодействия с моделью:

.service('UserService', function(User){ 

return { 
    getById: ... 
    getAll: ... 
    save: ... 
}; 

}); 

И сделать значение модели, чтобы быть вашим объектом представление:

module.value('User', function(){ 
    //user business logic 
}); 
Смежные вопросы