|
Вопросы по ангуляру
Щас ковыряю ангуляр, и думаю что текущий вопрос это не последний, поэтому создам отдельную тему, и буду тут спамить ангуляром.
что я делаю не так? Почему не обрабатывается 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, время: 10:42. |
|