search
HomeWeb Front-endJS TutorialDiscussion on programming ideas of MVW class framework for introductory knowledge of AngularJS_AngularJS

By implementing two simple business requirements, this article explores the differences between AngularJS and traditional JavaScript control DOM implementation, and tries to understand the programming ideas of frameworks such as MVW in popular Web front-end development.

This requirement is very common. For example, in a two-level menu, when the first-level menu item is clicked, the corresponding submenu item should be displayed or hidden.

jQuery implementation:

Copy code The code is as follows:




  • Item 1
             

                                                                                                                                                                                       
    • Item child 1

    •                                                                                    


//javascript

$('li.parent_item').click(function(){
$(this).children('ul.child').toggle();
})

AngularJS implementation:

Copy code The code is as follows:



  • Item 1
             

                                                                                                                                                                                                                                         





The traditional way of operating DOM will not be described again. The implementation of AngularJS is much more refined than the code, and only the HTML version is sufficient. The above code uses these knowledge points of AngularJS:
1.

Directives

2.Expressions

ng-click

and

ng-hide are both Directives that come with the framework. The former is equivalent to providing an Event Handler to the li tag. In the HTML element ( li) When clicked, the Expression (expression) hide_child = !hide_child will be executed. Let's first take a look at the ng-hide directive, which controls whether the HTML element should be displayed based on the assigned expression result (Boolean value) (implemented through CSS). In other words, if the variable hide_child is true, then ul will be hidden, otherwise the result will be the opposite. Hide_child here is actually a variable on $scope

. Changing its value can also be achieved by wrapping a method in the controller controller. However, the current statement is relatively simple and can be written directly in In the assignment of the instruction.

Through the above simple code analysis, we can see two obvious features of AngularJS:

1. The operation of DOM is sealed through instructions and expressions, and only simple code can save extra JavaScript code

2. The application of instructions and expressions is only directly nested in HTML, which is somewhat contrary to the Unobtrusive JavaScript code style that jQuery promotes

Let’s look at another requirement first, and then explain the above conclusion in detail.

Requirement 2: By clicking on the div, trigger the selection of a radio button in the form

The traditional HTML Form element is not very friendly to operate on today's mobile devices. For example, the Radio button radio button requires precise positioning on a touch screen to control this component, but finger positioning is very rough. A common approach is to add a corresponding Label control, but the screen ratio of the text itself is not ideal, and it does not have a clear information transmission effect. Therefore, a div or li tag with a relatively large area is usually operated indirectly.

jQuery implementation:


Copy code The code is as follows:



       

  •                     id="option1" />
           
       

// javascript
$('li.selection').click(function(){
    $(this).children('input[type="radio"]').click();
})

AngularJS的实现:

复制代码 代码如下:



       
  •         ng-click="model.option = option.value"
            ng-class="{active: model.option == option.value}" >
                        ng-model="model.option"
                value="{{option.value}}"
                id="option1" />
           
       

In this solution, we also did not involve additional JavaScript code and used a few more instructions. For comparison and reference, we only care about the expressions of the two directives ng-click and ng-model.

Let’s first look at the ng-model directive of the input element. The assignment here means that we associate the input on the template with the option attribute of the $scope.model object to gain an in-depth understanding of the data. For binding, please refer to Data Binding. This specified association enables the template control to be directly bound to the data Model, and this binding is bidirectional. This means that once the user modifies the value in the control (check radio input), the corresponding Model object will be reassigned (model.option); at the same time, if the value of the Model object changes, the input control in the template will also correspond Reflect changes. This is actually not achieved in the above jQuery implementation.

So, through the data binding of AngularJS, the process of indirectly triggering the input by clicking on the li element is as follows:

1. Click the li tag and assign a value to model.option;
2. Modify the Model object and locate the corresponding input control (the value of value is the one of model.option);
3. Activate the checked attribute of the input control

Through the above two cases, we have a new understanding of the operation of the Web front-end.

First of all, in terms of technical implementation, by introducing new instructions, expressions, data binding and other concepts, we can operate the DOM in a completely new way, not just the JavaScript code that is limited to the interaction between users and HTML components. accomplish. This change in thinking is huge.

Since the rise of dynamic web programming at the beginning of this century, server-side programming technology has been improving. From the beginning of CGI/PHP/ASP, the language and platform gave rise to .NET vs. Java, development efficiency and software process promoted the MVC framework/ORM/AOP, etc., and performance and big data brought NodeJS/NoSQL/Hadoop, etc. , and the technical requirements for the browser front-end seem to have not been so radical. On the one hand, most of the business needs of the B/S model can be met through the server and database; on the other hand, the browser itself has differences between different platforms, is not compatible with the standards of scripting language and rendering technology, and has limitations in computing power. deficiencies and safety considerations.

In this case, the requirements on the browser side most of the time only need to consider rendering the page and simple user interaction. HTML/DOM plus JavaScript/CSS thus achieve the main work of the front-end. Therefore, there were no front-end workers in the past, only web designers were needed. Gradually, there are more and more requirements for the front-end, and jQuery has become the most widely used JavaScript encapsulation library for operating DOM. At this stage, the main task of jQuery/JavaScript is still just as a tool for user browser terminal presentation and interaction.

Understanding the origin of jQuery, it is not difficult to find that some of the rules we pursued before, such as Unobtrusive JavaScript, were limited to the means and methods of implementation. In order to separate the DOM and JavaScript code logic, we gave priority to the more maintainable ones. Way. After the front-end demand for JavaScript increased, many MVC/MVP front-end frameworks appeared, as well as AngularJS’s so-called MVW (Model-View-Whatever), and the one-size-fits-all approach to JavaScript and DOM changed. Originally, we considered the direct operation of interface display and user interaction. Now we have client-side data binding, rich instructions, and dependency injection. What awaits us will be a new programming model and way of thinking.

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Javascript Data Types : Is there any difference between Browser and NodeJs?Javascript Data Types : Is there any difference between Browser and NodeJs?May 14, 2025 am 12:15 AM

JavaScript core data types are consistent in browsers and Node.js, but are handled differently from the extra types. 1) The global object is window in the browser and global in Node.js. 2) Node.js' unique Buffer object, used to process binary data. 3) There are also differences in performance and time processing, and the code needs to be adjusted according to the environment.

JavaScript Comments: A Guide to Using // and /* */JavaScript Comments: A Guide to Using // and /* */May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript: A Comparative Analysis for DevelopersPython vs. JavaScript: A Comparative Analysis for DevelopersMay 09, 2025 am 12:22 AM

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Python vs. JavaScript: Choosing the Right Tool for the JobPython vs. JavaScript: Choosing the Right Tool for the JobMay 08, 2025 am 12:10 AM

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript: Understanding the Strengths of EachPython and JavaScript: Understanding the Strengths of EachMay 06, 2025 am 12:15 AM

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScript's Core: Is It Built on C or C  ?JavaScript's Core: Is It Built on C or C ?May 05, 2025 am 12:07 AM

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript Applications: From Front-End to Back-EndJavaScript Applications: From Front-End to Back-EndMay 04, 2025 am 12:12 AM

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Python vs. JavaScript: Which Language Should You Learn?Python vs. JavaScript: Which Language Should You Learn?May 03, 2025 am 12:10 AM

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.