|
Вопросы по ангуляру
Щас ковыряю ангуляр, и думаю что текущий вопрос это не последний, поэтому создам отдельную тему, и буду тут спамить ангуляром.
что я делаю не так? Почему не обрабатывается 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 - не не слышал... |
хватит срать в оффтоп http://javascript.ru/forum/angular/
|
и вообще в линкинг функцию передается не $scope а scope
а вообще директивы пишутся с префиксами, ты должен писать <li ng-showPage> <a href="#{{item}}"> {{item}} </a> </li> |
Maxmaxmaximus6, спс учту)
|
а терь сравни 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>
|
А вообще правильнее и красивее писать (в 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'}
]
}
|
Maxmaxmaximus6, норм, но мне не особо важен синтаксический сахар, это не конечно + , но главное что бы работало как мне нужно)
|
Да и вообще если хочешь глобальные значения у меня запилить то не обязательно контроллер пилить)
ui.global{
menu: [
{text: 'home page', hash: 'home'},
{text: 'last news', hash: 'news'}
]
}
ui это модуль от которого можно отнаследовать новые модули если хочешь ui.module('name') создаст модуль, если такой модуль уже создан то вернет его =) Цитата:
|
Цитата:
function getHash(elem) {
return elem.hash || elem;
}
<li showPage>
<a href="#{getHash(item)}" bind="item.text"></a> <!-- я еще не совсем разобрался в синтаксисе ангуляра но вроде так можно?! -->
</li>
|
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 в зависимости от значечния. но И ЭТО не правильный вариант, так как для этих целей в ангуляре есть роутер)) Цитата:
|
| Часовой пояс GMT +3, время: 17:41. |
|