03.01.2014, 18:16
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Вопросы по ангуляру
Щас ковыряю ангуляр, и думаю что текущий вопрос это не последний, поэтому создам отдельную тему, и буду тут спамить ангуляром.
что я делаю не так?
Почему не обрабатывается click ?
var static = angular.module("staticPage", []);
static.directive("showPage", function () {
return function ($scope, element) {
element.bind("click", function () {
console.log("click")
});
};
});
<body ng-app="staticPage">
<div class="body" ng-controller="MainCtrl">
<div class="menu-wrap" >
<ul class="menu" ng-repeat="item in menu">
<li showPage> <a href="#{{item}}"> {{item}} </a> </li>
</ul>
</div>
<!-- .... -->
Нашел ошибку, не работает из за того что буква "P" в верхнем регистре , а атрибуты в нижнем регистре, toLowerCase - не не слышал...
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
Последний раз редактировалось cyber, 03.01.2014 в 18:21.
|
|
03.01.2014, 18:20
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
03.01.2014, 18:48
|
Профессор
|
|
Регистрация: 19.12.2013
Сообщений: 180
|
|
и вообще в линкинг функцию передается не $scope а scope
а вообще директивы пишутся с префиксами, ты должен писать
<li ng-showPage> <a href="#{{item}}"> {{item}} </a> </li>
|
|
03.01.2014, 18:51
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus6, спс учту)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
03.01.2014, 18:56
|
Профессор
|
|
Регистрация: 19.12.2013
Сообщений: 180
|
|
а терь сравни ui версию)
ui.directive("showPage", function () {
return function (scope, element) {
element.on("click", function () { console.log("click") });
};
});
<div controller="Main" class="menu-wrap" >
<ul repeat="item in menu" class="menu">
<li showPage>
<a href="#{item}">{item}</a>
</li>
</ul>
</div>
|
|
03.01.2014, 19:00
|
Профессор
|
|
Регистрация: 19.12.2013
Сообщений: 180
|
|
А вообще правильнее и красивее писать (в ui) вот так:
<div controller="Main as main" class="menu-wrap" >
<ul repeat="menuItem in main.menu" class="menu">
<li showPage>
<a href="#{menuItem.hash}" bind="menuItem.text"></a>
</li>
</ul>
</div>
function Main (){
menu = [
{text: 'home page', hash: 'home'},
{text: 'last news', hash: 'news'}
]
}
|
|
03.01.2014, 19:00
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus6, норм, но мне не особо важен синтаксический сахар, это не конечно + , но главное что бы работало как мне нужно)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
03.01.2014, 19:03
|
Профессор
|
|
Регистрация: 19.12.2013
Сообщений: 180
|
|
Да и вообще если хочешь глобальные значения у меня запилить то не обязательно контроллер пилить)
ui.global{
menu: [
{text: 'home page', hash: 'home'},
{text: 'last news', hash: 'news'}
]
}
ui это модуль от которого можно отнаследовать новые модули если хочешь
ui.module('name') создаст модуль, если такой модуль уже создан то вернет его =)
Сообщение от cyber
|
но мне не особо важен синтаксический сахар
|
а мне важен на 90% сахар, так как просто сделать ЧТОБЫ РАБОТАЛО и дурак может. =)
|
|
03.01.2014, 19:05
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus6
|
А вообще правильнее и красивее писать (в ui) вот так:
|
я потом добавлю метод getHash и все
function getHash(elem) {
return elem.hash || elem;
}
<li showPage>
<a href="#{getHash(item)}" bind="item.text"></a> <!-- я еще не совсем разобрался в синтаксисе ангуляра но вроде так можно?! -->
</li>
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
03.01.2014, 19:08
|
Профессор
|
|
Регистрация: 19.12.2013
Сообщений: 180
|
|
cyber,а вообще директиву шоу пейдж делать не надо, ты должен создать директиву сменьщика страниц и применить её к контейнеру страниц, и заставить её слушать изменения хэша) это к слову так.
типа
<ul>
<li><a href='#home'>Главная</a></li>
<li><a href='#news'>Новости</a></li>
</ul>
<ul pageContainer>
<li page='home'>содержимое</li>
<li page='news'>содержимое</li>
</ul>
pageContainer и page 2 взаимосвязанные директивы). Директива pageContainer слушает изменения хэша и показывает ту или иную директиву page в зависимости от значечния. но И ЭТО не правильный вариант, так как для этих целей в ангуляре есть роутер))
Сообщение от cyber
|
но вроде так можно?! -->
|
да, только функция getHash не должна делать побочных эффектов, только возвращать что-то.
Последний раз редактировалось Maxmaxmaximus6, 03.01.2014 в 19:11.
|
|
|
|