注意事项
ng-repeat 和 sql data
我们经常需要从sql拿一些table资料展现出来,一般是放在一个 js 的 arrayobject里 [{xx:1},{xx:2}];
angularjs 的ng-repeat 让我们轻松实现了模板同步
但有一点要切记,scope属于模板,arrayObject属于sql
所以我们绝对不可以因为模板需求而添加任何属性在 arrayObject上,我们只能添加在scope上
<div ng-repeat="obj in array" ng-init="age=0"> <!--如果这里换成 ng-init="obj.age=0" 就不应该了--> name : {{obj.name}} age : {{age}} <!--age 被加入到了这个row的scope--> <div ng-click="addAge()">addAge</div> </div>
$scope.addAge = function () {
this.age++; //这里的this指向当前的scope
}
我们可以通过事件调用到当前的scope读写age属性。
这里还要了解到,repeat指令会帮我们创建scope,续传parent scope .
如果我们在parent scope 的某个事件想修改某个row的一些view,我们应该使用 broadcast事件的方式。
因为repeat 是通过 array 做出来的,外部除了array和obj 没有任何接口可以让你和view做接触 .
所以只能使用 broadcast. 这也是我们为什么强调千万不要因为想改动view而宽展了obj 的属性。arrayobj是sql的,其它模板可能也要用的,不能因为这个模板而弄脏!
2个module 遇到同样的名字的service.
module1 有一个service 叫 abc
module2 也有一个service 叫 abc (撞名字)
当 module3 依赖注入 module1,module2
那么当module3调用 service abc 时,获取的是依赖注入排列最后一个的service,这里也就是module2的service abc!
依赖注入的限制
var extendAngular = angular.module("extendAngular", [], angular.noop); extendAngular.provider("$ajax", function () { //这里不能依赖注入$http哦 this.$get = ["$http", function ($http) { //这里就可以! return { name : "keatkeat" } }]; });
provider 中注入不了$http , 但是 $get factory的时候可以, 要注意初始化module的时候.config .provider 的时候有些东西是不能注入进去的!
指令
Multiple directives requesting isolated scope
. 多个指令在一个element内, 只能有一个 isolated scope , 一个 template , 一个 controller name .
ng-transclude 的scope会续传parent ,和你的指令是sibling的关系! 这是为了如果你的指令是隔离的,内部的transclude 还能和上一层的scope保存通讯!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)