我爱编程

AngularJS 笔记

2018-07-22  本文已影响0人  篮筐轰炸机5号

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

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

简介

AngularJS 是一个 JavaScript 框架。

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

数据双向绑定

<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(){
    ……
}
上一篇 下一篇

猜你喜欢

热点阅读