Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
var app = ui.module('app'); // создаем модуль наследуем его от ui app.controller('Main', function(){}); app.controller('Panel', function(){}); app.filter('fdf',function(){}); app.directive('fdf',function(){}); app.directive('fdf',function(){}); app.animation('fade',function(){}); ну вот в таком стиле) Цитата:
типа $scope.myPanel = new Panel(); и только через myPanel обращаться. но ты дал мне понять что это тупо (а я и сам так считал просто с ангуляра слизал) и что можно делать контроллеры так Panel.call($scope); тогда не придется каждый раз писать myPanel чтобы обратится к свойствам контроллера. ок, но как тогда быть если у нас панель в панели и мы хотим обратится к внешенй панели ? |
Maxmaxmaximus7, хм может так
var panel = $scope.myPanel = new Panel(); myPanel.parent = panel;// пусть пользователь вручную добавляет, или ты создай parent которому при создание присваиваться this. panel.call($scope); |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
cyber короче вот такими способами можно создать контроллер
<div ui:controller="List"></div> <div ui:controller="List()"></div> <div ui:controller="new List"></div> <div ui:controller="new List()"></div> <div ui:controller="Menu = List"></div> <div ui:controller="Menu = List()"></div> <div ui:controller="Menu = new List()"></div> теперь надо придумать какими способами можно обращаться к его полям. может так? <div ui:controller="Menu = new List()"> {name} {List.name} {Menu.name} </div> |
Цитата:
|
cyber,
по поводу обращения к родительским контроллерам с такими же именами, вроде проблему решил: <div ui:controller="MainMenu = new List()"> <div ui:controller="SubMenu = new List()"> {name} // sub {List.name} // sub {SubMenu.name} // sub {MainMenu.name} // main </div> </div> норм не? то есть ЕЕЕЕСЛИ ВДРУГ такое встретится что человек сделал один одноименный контроллер в другой и внутри внутреннего хочет обратится к полям внешнего, то он сможет сделать так <div ui:controller="MainList = List"> <div ui:controller="List"> {name} // sub {MainList.name} // main </div> </div> он даст верхнему просто второе имя MainList и все) типа псевдоним |
Maxmaxmaximus7, угу только тебе прийдеться это все в доке описать, потратишь ты времени на доки:)
|
Цитата:
Цитата:
|
Цитата:
|
я пошутил жи) дока кстате будет написана на ui ))
|
если какое то соглашение по размещению функции, которые вызываються из функции прототипов, щас я просто их обьявляю после обьявления методов прототипа.
И еще к примеру есть функции которые используют объект прототипа, и как лучше сделать объявить их в прототипе с _, примеру _template (что не хочеться делать) или передавать сам объект в качестве параметров (как я щас и делаю)? |
Цитата:
|
Цитата:
|
> точки крепления) логика описана в контроллерах, взаимодействие с dom описано в директивах,директивы это такие специльные атрибуты.
> fx:fire="panel.width + 10" Это - логика Точка крепления выглядела бы так: fx-fire="{widthOfFire}" > она быстрее где результаты замеров? И за счет чего ускорение? > сахарнее , и в ней есть куча фитч которых нет в ангуляре, таких например как FRP формулы и ассинхронные сервисы с кодом синхронных. А тут по подробнее пожалуйста) > не стоит не иди, ты может использовать и другие разделители) например - или точку. Отсутствие правил - ещё хуже |
Цитата:
|
Цитата:
Цитата:
controller="Panel" создает контроллер controller="Panel(1, 'ololo')" создает контроллер с определенными параметрами controller="Menu = Panel" создает контроллер и дает ему имя Menu Цитата:
Цитата:
Цитата:
ладно чуть позже распишу. Цитата:
|
об одной из фитч, во первых раз наши сервисы поддеррживают ассинхронку, то мы можем создать сервис для работы с сервером) который будет динамически обновлять данные в ячейке в которую мы присвоили промис.
function Chat() { messages = $api.getMessages( 400 ) } мы создали (ну где то выше в коде) сервис $api у него есть метод отправляющий запрос на сервер и возвращающий промис. мы сказали этому методу что посылать нужно запрос каждые 400 миллисекунд и подгруженные данные пихать в поле messages контроллера. ответ будет поступать в формате json и в messages будет попадать массив собщений) это как пример. Например есть сервис $interval который возвращает фьючерс) мы можем сделать примерно то же самое и не создавая своего сервиса, оч просто, есть встроенный сервис для работы с сетью $http, он не тупой и если понимает что приходит json то сразу парсит его. ок, он возвращает промис, по которому $interval может понять что какое-то действие запланировано, и ждет его исполнения прежде чем начать отсчитывать свой следующий таймер и..... короче влом обьяснять как эта магия работает, короче можно то что мы сделали выше сделать так: function Chat() { messages = $interval( function() { return $http( 'api.php?getMessages' ) }, 400 ) } и в messages всегда будет лежать актуальный массив с сообщеньками) который естественно при изменении будет перерисовываться, все дела. |
<select ui:controller="Select"> <option ui:repeat="option in options" on:click="selectedIndex = $index"> {option} </option> </select> function Select() { selectedIndex = 0 options = ['Рас', 'Два', 'Три', 'Четыре', 'Пятдесятодин'] value = ( options[selected] ) // вот тут у нас всегда будет выбранное значение } в поле value содержится формула (геттер, если не выебываться:p ) который вычислится при обращении к нему, абстрактно, для нас там будет лежать всегда актуальное значение, это называется FRP. больше никаких событий и калбяков. |
ну а то что this больше полям писать не надо (но можно) означает что мы можем не ебаца больше с
var self = thisесли вы понимаете о чем я) |
Maxmaxmaximus7, ты так и не ответил на мой вопрос.
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
function(){}.bind(this) что убого жи cyber, я тебя немного не понял, есть методы публичные, есть методы приватные, и есть просто функции служебные, и эти функции используют методы. подразумевается что все надо писать вот так: function Cat(){ this.say = function(){} //публичная this._count = function(){} //приватная function trim(name){} // служебная } а то что в прототип методы пихать это уже ЛЮДИ придумали) это паттерн, НАТИВНО писать надо так как я выше показал) и нет, соглашения нет. на всякий напомню что если в функции this не требуется то это значит что она работает не с обьектом, следовательно в методы обьекта её пихать не надо. |
Цитата:
Я уже пол года пишу с транслятором и не нарадуюсь:) |
Цитата:
|
Цитата:
|
я не знаю, такого соглашения нет, идеального варианта я так и не придумал(
по этому я делаю типа так var Cat = (function(){ function trim(){} function Cat(){} Cat.prototype.say = function(){} return Cat; })(); все служебные функции и константы пишу вверху самом в принципе можно ебнуть как статическое свойство и константы и вспомогалки типа Cat.trim |
Цитата:
Прост ты придумываешь свой синтаксис, но в тоже время говоришь - это не другой язык, а JS, странно выходит. Назови его что ли МаксимусСкрипт и напиши спецификацию. Как по мне: код нужно писать как можно очевиднее без добавления "магии", а у тебя всё состоит из "магии" - имхо это не есть гуд. Хотя, дело твоё :) |
Цитата:
Цитата:
|
Цитата:
|
kobezzza, слушай, есть ли смысел использовать "use strict" сжатом коде? по сути он не дает прироста производительности, а только указует на ошибки
|
Цитата:
|
Цитата:
|
и вообще у меня ни какой неочевидной магии нет, есть FRP стиль и есть обычный стиль, все фитчи направлены на то чтобы писать в FRP стиле и все, и ассинхронка и формулы. все это FRP. контроллер должен быть написан либо в FRP стиле либо в обычном. Мешать - неэстетично и нелогично.
|
> я же сказал тебе что это просто пример и вычисления там делаются только чтобы показать что это выражение а не просто слова
выражение - это уже логика |
Цитата:
|
Часовой пояс GMT +3, время: 06:46. |