AngularJS 笔记

作者: 篮筐轰炸机5号 | 来源:发表于2018-07-22 22:04 被阅读0次

    原文链接:https://zhang35.coding.me/2018-AngularJS-7-23.html

    做绩效考评网站前端,用到angular.js,很强大。

    简介

    AngularJS 是一个 JavaScript 框架。

    AngularJS 使得开发现代的单一页面应用程序(SPAs:Single Page Applications)变得更加容易。

    • AngularJS 把应用程序数据绑定到 HTML 元素。
    • AngularJS 可以克隆和重复 HTML 元素。
    • AngularJS 可以隐藏和显示 HTML 元素。
    • AngularJS 可以在 HTML 元素"背后"添加代码。
    • AngularJS 支持输入验证。

    数据双向绑定

    <div ng-app="myApp" ng-controller="myCtrl">
        名字: <input ng-model="name">
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.name = "John Doe";
    });
    </script>
    

    view和controller中的值绑定后,改变一方,另一方实时变化。

    ng-repeat循环元素

    基本用法:x in records:

        <tr ng-repeat="x in records">
            <td>{{x.Name}}</td>
            <td>{{x.Country}}</td> 
        </tr>
    

    同时输出key和value,(x, y) in myObj:

    
    <table ng-controller="myCtrl" border="1">
        <tr ng-repeat="(x, y) in myObj">
            <td>{{x}}</td>
            <td>{{y}}</td> 
        </tr>
    </table>
    
    <script>
    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
        $scope.myObj = {
            "Name" : "Alfreds Futterkiste",
            "Country" : "Germany",
            "City" : "Berlin"
        }
    });
    </script>
    

    ng-options下拉选项

    参考:angular指令笔记ng-options的使用方法AngularJS脚本之家

    <select ng-options="c.id as c.city for c in obj1" ng-model="selectedCity" ng-change="SelecteCity()">
    

    这里 c.id as c.city for c in obj 我们使用 obj 对象的 id作为select的value,使用obj 的city 作为 select 的label。

    本文的jade代码:

    select.form-control(ng-options='item.departmentId as item.departmentName for item in relations', ng-model='search.departmentId')
    

    relations.departmentName为显示的label,relations.departmentId为value,绑定的model是search.departmentId。

    (relations是Controller中定义的对象)

    $scope作用域问题:

    例如,前端指定ng-change='loadData':

    select.form-control(ng-options='item.id as item.username for item in persons', ng-model='search.personId',ng-change='loadData')
    

    在js中定义loadData():

    var loadData = function () {
        $http(buildParam())
            .then(function (response) {
                if (response.data.status === 200) {
                    $scope.items = response.data.data;
                } else {
                    $.notify(response.data.message, 'danger');
                }
            },
            function (x) {
                $.notify('服务器出了点问题,我们正在处理', 'danger');
            });
    };
    

    当选项变更时,是无法触发loadData的,因为前端能交互的作用域都在$scope里。需要添加:

    $scope.loadData = loadData();
    

    或者直接如下定义:

    $scope.loadData = function(){
        ……
    }
    

    相关文章

      网友评论

        本文标题:AngularJS 笔记

        本文链接:https://www.haomeiwen.com/subject/xusduftx.html