标签:http io ar os 使用 sp for strong 数据
ng-app 可以不必赋值:<div ng-app> 即合法ng-app 能自动载入(auto-bootstrap),其他 app 要手动 angular.bootstrap,ng-app 不可嵌套。一般可以使用注入依赖添加其他 module,除非明确需要载入多个 app 的话。injectorng-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