Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2016, 20:01
Аспирант
Отправить личное сообщение для stweet Посмотреть профиль Найти все сообщения от stweet
 
Регистрация: 21.12.2011
Сообщений: 41

модель на уровне приложения.
// Вопрос, как создать глобальную модель и подписаться на её поведение?
// Допустим, в java я использую "модель поведения" - observer.

// В ангуляре есть сервисы и фабрики но или я *** или лыжи не едут.
// Ниже привёл код который пытаюсь реализовать. Может кто сталкивался
// и сможет подсказать как реализовать слушателей на уровня приложения
// что бы изменение модели можно было узнать из любого контроллера или
// юзать свои директивы?

// Заранее спасибо!
var

// Пример того, что я пытаюсь добиться.
application = angular.module("Application", []);

// ...
application.directive("myStateShow", function(){
    
    global_state_change(function(){
        
        this.element.display = this.element.attr['my-state-show'] === global_state ? "block" : "none";
    });
});

// ...
application.directive("myStateActive", function(){
    
    global_state_change(function(){
        
        this.element.class = this.element.attr['my-state-active'] === global_state ? "active" : "";
    });
});

// ...
application.controller("Controller", function($scope) {
    
    $scope.setState = function(new_state) {
        global_state = new_state;
    };
});


<div ng-app="Application">
    <div class="container">
        <div>
            <div my-state-active="1">State 1</div>
            <div my-state-active="2">State 2</div>
            <div my-state-active="3">State 3</div>
        </div>
        <div>
            <div my-state-show="1">
                <h1 class="page-header">First frame</h1>
            </div>
            <div my-state-show="2">
                <h1 class="page-header">Next frame</h1>
            </div>
            <div my-state-show="3">
                <h1 class="page-header">Last frame</h1>
            </div>
        </div>
        <div ng-controller="Controller">
            <button ng-click="setState(1)">set state 1</button>
            <button ng-click="setState(2)">set state 2</button>
            <button ng-click="setState(3)">set state 3</button>
        </div>
    </div>
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2016, 12:33
Аспирант
Отправить личное сообщение для stweet Посмотреть профиль Найти все сообщения от stweet
 
Регистрация: 21.12.2011
Сообщений: 41

// Собственно сложность понимания была на уровне диспетчеризации
// глобального скопа. Т.е. насколько я понял, отдельно слушать модель
// нет возможности, а в случае войны дергать весь скоп.

// Прискорбно, но как то так...
/**
 * 
 * @param {type} param1
 * @param {type} param2
 */
app.service("appModel", function(){
    this.state = 1;
});

/**
 * 
 * @param {type} param1
 * @param {type} param2
 */
app.directive("ngStateShow", function(appModel){
    
    return {
        link: function(scope, el, at) {
            scope.$watch(function(){
                if (appModel.state == at.ngStateShow) {
                    el.show();
                } else {
                    el.hide();
                }
            });
        }
    };
});

/**
 * 
 */
app.directive("ngStateClick", function(appModel) {
    return {
        link: function(scope, el, at){
            el.bind("click", function(){
                appModel.state = at.ngStateClick;
                scope.$apply();
            });
        }
    };
});
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2016, 07:03
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Я правильно понимаю, ты хочешь динамически меня переданную в директиву модель?
Почитай сначала о создании директив и обрати внимание на параметр scope
https://habrahabr.ru/post/200620/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 Ext приложения в одном :) XAPuTOH ExtJS 2 01.02.2016 07:40
Как в Backbone изменять модель в подвью? ilya_ Backbone.js 1 20.01.2015 06:09
После добавления localstorage в backbone модель, POST запрос ничего не возвращает aphex Общие вопросы Javascript 0 03.12.2013 15:26
Продажа одобренного игрового приложения в 4 соц с доходом monstrons Flash 4 05.02.2013 20:16
способы организации кода melky Общие вопросы Javascript 17 01.10.2011 22:57