AngularJS解决ng界面长表达式(ui-set)的方法分析
2016-11-07 10:33
681 查看
本文来自网友sun shine的问题,问题如下:
您好, 我想求教一个问题.
在$scope中我的对象名字写的特别深, 在 html中我又多次用到了同一个对象, 对不对在 html中让它绑定到一个临时变量呢?
比如:
$scope.this.is.a.very.deep.obj = {
'name': 'xxx',
'state': 'active'};
在 模板中,
{{this.is.a.very.deep.obj.name}}
{{this.is.a.very.deep.obj.state}}
类似于这种, 我能否把 this.is.a.very.deep.obj 预先赋给一个临时的变量, 然后在 两个 span中只需 o.name, o.state 就行了呢? 我觉得这样解析起来是不是快一点.
但是我试了, 并没有成功. 求指点.
先谢了.
在这里首先需要说明的是ng界面的所有引用都需要在$scope这个viewmodel(ui和view的胶水层),所以如果我们希望能够把表达式变得更可读,更友好,那么我们就必须在$scope上创建这个变量。
再则对于ng其使用使用的一堆的$watch,实现脏检查,如果你理解这些了,那么我们就可以很容易的实现一套如spring的
<c:set var="xxx" expression="xxx" />
的tag.
对于实现这类tag,我们最好的方式则是利用ng的directive来实现,代码如下:
angular.module("greengerong.ui.tag", []) .directive("uiSet", [ function() { return { restrict: "EA", link: function(scope, elm, iAttrs) { scope.$watch(iAttrs.expression, function(val) { scope[iAttrs. var] = val; var apply = !scope.$$phase ? scope.$apply : angular.noop; apply(); }); } }; } ]);
希望本文所述对大家AngularJS程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 解决ng界面长表达式(ui-set)
- Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- angularjs中ng-include使用被注释或者报错解决方法
- 解决 找不到方法:“Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)”。
- AngularJS实现在ng-Options加上index的解决方法
- AngularJs表达式与ng-bind及ng-cloak解决闪屏问题解决方案
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- 详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
- AngularJS框架的ng-app指令与自动加载实现方法分析
- ImageView.setImageURI()方法 图片界面不更新问题解决方案
- AngularJS动态增加dom,导致里面ng-click、modal绑定失效的问题解决方法
- AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
- AngularJS1.6版本中ui-router路由中/#!/的解决方法
- eclipse4 以后,RCP 界面开发configurer.setShellStyle(SWT.MIN | SWT.CLOSE);不生效的解决方法
- chenzi.exe的分析及解决方法
- 类型或命名空间名称“UI”在类或命名空间“System.Web”中不存在(是否缺少程序集引用?)的解决方法
- 错误分析及解决方法:ASP0177,800401F3
- 类型或命名空间名称“UI”在类或命名空间“System.Web”中不存在(是否缺少程序集引用?)的解决方法
- 解决问题: .Net异常 Method not found: Void System.Web.UI.WebControls.BaseDataList.set_Caption(System.String).