将Javascript函数转换为AngularJS函数

um6iljoc  于 2023-04-10  发布在  Angular
关注(0)|答案(3)|浏览(139)

我写了一个简单的javascript函数,在两个div元素之间切换。像这样:

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

当我在学习Angular时,我想将其转换为app.js中的Angular函数。我可以这样做吗?

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

谢谢!

oxcyiej7

oxcyiej71#

您提供的代码有几个问题。
首先,没有所谓的AngularJS唯一函数。它们与任何其他javascript函数相同。如果你想在AngularJS的范围内使用“javascript”函数,你可以这样做:

function goToResults() {
   ...
}

$scope.goToResults = goToResults;

其次,在控制器中处理DOM操作被认为是一种不好的做法,应该使用指令。
第三,据我所知,你想根据一些事件显示或隐藏一个div。有一些内置的功能可以做这个事情(ng-show,ng-hide,ng-if)。
你似乎缺乏一些关于Javascript和AngularJS的基础知识,我建议你通过Angular自己的文档https://docs.angularjs.org/tutorial给出的教程来学习。

xtfmy6hx

xtfmy6hx2#

$(document).ready(function () {
    $('.parent_select').click(function (event) {
        if (this.checked) {
            $('.child_select').each(function () { 
            $(this).prop('checked', true); 
            });

        } else {
            $('.child_select').each(function () { 
            $(this).prop('checked', false);              
            });
        }
    });

    $('.sub_select').click(function (event) {
        if (this.checked) {
            $('[data-parent-id="'+this.value+'"],.parent_select').each(function () { 
            $(this).prop('checked', true); 
            });
        } else {
            $('[data-parent-id="'+this.value+'"],.parent_select').each(function () { 
            $(this).prop('checked', false);              
            });
        }
    });

    $('.menu_child').click(function (event) {
        if (this.checked) {
            $('[data-paren-id="'+this.value+'"], .parent_select').each(function () { 
            $(this).prop('checked', true); 
            });
        } else {
            $('[data-paren-id="'+this.value+'"], .parent_select').each(function () { 
            $(this).prop('checked', false);              
            });
        }
    });
});
yqlxgs2m

yqlxgs2m3#

从技术上讲可以用

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

然而,这并不是一种非常“有Angular ”的方式。在this question的答案中描述了一种更“有Angular ”的路线。一般来说,引用特定的元素并不是“有Angular ”的方式;它寻求的是提供一组javascript实用程序(已处理)HTML使用,例如指令,本质上是HTML中使用的新元素或属性。指令的实现与它使用那些属性或元素修改的元素没有直接耦合,这使得angular更可重用,并且,在我和许多其他人看来,一旦你习惯了就更容易读和写了。

相关问题