标签:http io ar os 使用 sp for strong 数据
ng-app
可以不必赋值:<div ng-app>
即合法ng-app
能自动载入(auto-bootstrap),其他 app 要手动 angular.bootstrap
,ng-app
不可嵌套。一般可以使用注入依赖添加其他 module,除非明确需要载入多个 app 的话。injector
ng-model
和 ng-bind
分别为数据绑定的 设定 和 取值 (于 $scope 内)
<input ng-model="foo" /> <p ng-bind="foo" />
{{ variable }}
的效果和 ng-bind
相同,使用 ng-bind
的一个好处在于可以避免与其他(如 django)模板系统的冲突。
controller 是一个以 $scope
为参数的函数。他通过修改 $scope.var
来实时改变视图。
也可以添加方法:
$scope.double = function(num) {return num*2 ; } ; lang:html <input ng-model="num" />{{ double(num) }}
<ng-controller="">
的 controller 内容会在该 html 元素被加载时阻塞式执行,也有可能是在 module 被加载时执行
标准的 controller 声明方式为使用数组符号:
someModule.controller(‘MyController‘, [‘$scope‘, ‘dep1‘, ‘dep2‘, function($scope, dep1, dep2) { ... $scope.aMethod = function() { ... } ... }]);
把 controller 中与 view 无关的业务逻辑,拿出来做成可复用的独立 module,就是 service。如 Ajax
要想在一个 module 中使用另一个 module 的 service,就要把 service 放进第二构造函数的那个列表中,这个过程也被称为 依赖注入
每个依赖于 service 的组件都能得到一个专属的 service 实例,该实例是由 service factory 生成的
service 通常以 $
开头
凡是被注入的依赖都要按顺序出现在函数的参数列表中,否则不能使用。也可以给他们起别名,如下例 win
代表 $window
。
.controller(‘aCtrl‘,[‘$scope‘, ‘$window‘, function($scope,win){ win.alert("test") }])
通过 provide
在 module 的 config 函数内注册一个 service:
angular.module(‘myModule‘, []).config(function($provide) { $provide.factory(‘serviceId‘, function() { var shinyNewServiceInstance; //factory function body that constructs shinyNewServiceInstance return shinyNewServiceInstance; }); });
$scope
在 DOM 结构中是可继承的。每一次 ng-controller
指令都会新建一个子scope。子scope可以访问上层 DOM 中指定的 $scope 属性。$scope
其实是一个 angular 内建 serviceview
就是 DOM,是 controller 数据在 html 上的投影。$http.get("url").success(function(data){})
$http.post(‘/someUrl‘, {msg:‘hello word!‘})
POST 方法的默认编码方式是:Content-Type: application/json
,而非 jquery 的 Content-Type: x-www-form-urlencoded
。因此基于后一种编码方式的后台框架,如 django,就无法在 request.POST
中正确提供 POST 数据。因为真正的数据被按照 JSON 格式编码在了 request 的 body 里面。解决方法要么在 ajax 参数里显示指定编码格式,要么在后台 json.loads(request.body)
但后一种方法要做额外的参数检查,所以最好还是在前段改变编码格式。
UI Bootstrap
提供了几个便捷的 Twitter bootstrap 组件封装,其中包含 tab 和 dropdown 。但新组件的接口都还比较简单,如 tabset 就默认不包含 dropdown 。
tabset/tab 组件的实际行为,其实还是将标签自动转换为 bootstrap 的传统格式,因此仍可以通过传统方式创建 dropdown 标签:
<tabset> <tab></tab> ... <li class="dropdown"> <a class="dropdown-toggle">更多</a> <ul class="dropdown-menu"> <tab></tab> ... </ul> </li> </tabset>
但这种方式会有一个小问题就是:点击下拉菜单中的标签页后,下拉菜单不会自动关闭。这时候就要使用 dropdown 组件的自带接口来实现了,只需改一下 <li class="dropdown">
标签:
<li dropdown is-open="dropdown_open"> <a class="dropdown-toggle"> 更多 <span class="caret"></span> </a> <ul class="dropdown-menu"> <tab ng-click="dropdown_open=!dropdown_open"></tab> ... </ul> </li>
这里使用 is-open
属性的前提是添加 dropdown
指令,并且要注意去掉 class="dropdown"
属性,否则会报错。
标签:http io ar os 使用 sp for strong 数据
原文地址:http://my.oschina.net/lionets/blog/345365