2016-02-21 4 views
2

Я написал простую функцию javascript, которая переключается между двумя элементами div. Как так:Преобразование функции Javascript в функцию AngularJS

function goToResults() { 
    document.getElementById("services").style.display = "none"; 
    document.getElementById("results").style.display = "block"; 
} 

Как я учусь Угловое, я хочу, чтобы преобразовать его в угловую функцию в app.js. Могу ли я сделать следующее?

$scope.goToResults = function() { 
    $scope.getElementById("services").style.display = "none"; 
    $scope.getElementById("results").style.display = "block"; 
} 

Спасибо!

+1

Использование директив для манипулирования DOM. Проверьте [ng-style] (https://docs.angularjs.org/api/ng/directive/ngStyle) –

+1

Просмотрите все основные директивы в левом меню документации. Есть множество доступных для этого ... 'ng-style' ...' ng-class' ... 'ng-if' ..' ng-show' ... 'ng-hide' ... 'ng-switch' .... все управляются вашей моделью данных – charlietfl

ответ

3

Есть несколько проблем с частью кода, которую вы предоставили.

Во-первых, нет таких функций, как функции AngularJS. Они такие же, как и любая другая функция javascript. Если вы хотите использовать функцию «JavaScript» внутри сферы AngularJS, вы можете сделать следующее:

function goToResults() { 
    ... 
} 

$scope.goToResults = goToResults; 

Во-вторых, это считается плохой практикой для обработки манипуляции DOM внутри контроллера. Вместо этого используйте директивы.

В-третьих, из того, что я понимаю, вы хотите показать или скрыть div на основе какого-либо события. Есть встроенные функции, которые делают точные вещи (ng-show, ng-hide, ng-if).

Вы, кажется, не хватает какой-то фундаментальные знания о Javascript & AngularJS, и я предлагаю идти через учебники данном примере собственной документации ANGULAR по https://docs.angularjs.org/tutorial

+0

да Я относительно новичок в AngularJS, я просмотрю учебники еще – OneMoreQuestion

+0

У AngularJS есть одно из самых больших сообществ из всей экосистемы javascript, там есть много хороших учебных пособий. Вы также можете выполнить поиск на youtube для некоторого сквозного учебника. Удачи! –

-2

Это технически возможно использовать

$scope.goToResults = function() { 
    document.getElementById("services").style.display = "none"; 
    document.getElementById("results").style.display = "block"; 
} 

Однако, это не очень «угловой» способ сделать это. Более «угловой» маршрут описан в ответах на this question. Вообще говоря, обращение к конкретным элементам не является «угловым» способом; он ищет вместо этого набор javascript-утилит, которые легко доступны для обрабатываемого HTML-кода, например директивы, которые по существу являются новыми элементами или атрибутами для использования в HTML. Реализация директив не имеет прямого связывания с элементами, которые он модифицирует с использованием этих атрибутов или элементов, что делает угловые гораздо более многоразовые и, в моем и многих других мнениях, легче читать и писать, как только вы привыкнете к нему ,

+0

*« Самый правильный правильный способ »* ... нет, это не – charlietfl

+0

Не работает ли это? Мне было ясно, что это плохая практика, но это способ сделать это наиболее похожим на ОП, не так ли? (кроме простого JS, но тогда это не подходящий ответ) –

+0

Итак, почему бы вам предложить первое решение, которое является плохим, и заявить, что оно «правильно» *. Посмотрите на свой собственный ответ и ничего не прочитайте, кроме первой строки и кода – charlietfl

Смежные вопросы