关于angular中函数的先后执行之我见(以及angular的小bug)

在js中,函数的先后执行

(1)在angular中假设有这个场景,对表单资料进行编辑,刚好这个表单有select选项需要从后台中获取,这个时候这个表单使用angular进行开发的时候的正确打开方式应该是

先加载select选项,在加载表单的对应内容(由于http是异步的,并不是单纯的把js顺序调整一下就可以的)

这时候可以使用angular自带的$q返回promise来控制函数运行,

如果函数中没有其他的异步,简单粗暴的使用$timeout来控制

(2)input【type=hidden】使用ng-model无法赋值中这个bug,可以套个div把东西隐藏 type设为别的值,后者任何隐藏他的方法。

(3)在查阅资料的时候发现了大家另一种的判断list加载到最后一条的方案

angular中判断 ng-repeat是否迭代完毕。

by:古德God http://www.cnblogs.com/wangmeijian/p/5141266.html

//方法一

$scope.data = [
    {
        str: ‘a‘
    },
    {
        str: ‘b‘
    },
    {
        str: ‘c‘
    }
]
//自定义指令repeatFinish
app.directive(‘repeatFinish‘,function(){
    return {
        link: function(scope,element,attr){
            console.log(scope.$index)
            if(scope.$last == true){
                console.log(‘ng-repeat执行完毕‘)
            }
        }
    }
})
<div id="box">
    <span ng-repeat="item in data" repeat-finish>{{item.str}}</span>  //小驼峰,repeatFinish ,用 -  隔开,repeat-finish
</div>
<div id="box">
    <span ng-repeat="item in data" repeat-finish="renderFinish()">{{item.str}}</span>
</div>
再通过指令的attr参数获取这个处理函数

复制代码
app.directive(‘repeatFinish‘,function(){
    return {
        link: function(scope,element,attr){
            console.log(scope.$index)
            if(scope.$last == true){
                console.log(‘ng-repeat执行完毕‘)
                scope.$eval( attr.repeatFinish )
            }
        }
    }
})
//controller里对应的处理函数
$scope.renderFinish = function(){
    console.log(‘渲染完之后的操作‘)
}
app.directive(‘repeatFinish‘,function(){
    return {
        link: function(scope,element,attr){
            console.log(scope.$index)
            if(scope.$last == true){
                console.log(‘ng-repeat执行完毕‘)
                //向父控制器传递事件
                scope.$emit(‘to-parent‘);
                //向子控制器传递事件
                scope.$broadcast(‘to-child‘);
            }
        }
    }
})
//父控制器中监听事件
$scope.$on(‘to-parent‘,function(){
    //父控制器执行操作
})

//子控制器中监听事件
$scope.$on(‘to-child‘,function(){
    //子控制器执行操作
})
复制代码
时间: 2024-10-21 14:09:29

关于angular中函数的先后执行之我见(以及angular的小bug)的相关文章

angular中的MVVM模式

在开始介绍angular原理之前,我们有必要先了解下mvvm模式在angular中运用.虽然在angular社区一直将angular统称为前端MVC框架,同时angular团队也称它为MVW(Whatever)框架,但angular框架整体上更接近MVVM模式.下面是Igor Minar发布在Google+ https://plus.google.com/+IgorMinar/posts/DRUAkZmXjNV的文章内容: MVC vs MVVM vs MVP. What a controver

jQuery清除、停止队列中剩下(未执行的函数)

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>jQuery清除.停止队列中剩下(未执行的函数)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <scrip

JQuery中的回调函数不被执行问题的原因

1 $.post(handleUrl, {mid:mid}, function(data) 2 { 3 alert('call back'); 4 }, 'json'); 非常简单的一句回调,再贴上php的处理代码: 1 public function intend($mid=0) 2 { 3 p($mid); 4 $this->ajaxReturn('','',1); 5 } firebug显示200相应的情况下,死活不弹出call back的提示框,几经周折,问题解决.问题出在 p($mid

JavaScript中的匿名函数、立即执行函数和闭包

匿名函数是没有函数名的,不能单独使用: 立即执行函数是基于匿名函数实现的,也没有函数名,会在定义后立即执行: 闭包是有权访问另一个函数作用域中的变量的函数.匿名函数.立即执行函数只要满足 有权访问另一个函数作用域中的变量 这一个条件,就成了闭包. 匿名函数 匿名函数:没有函数名的函数 匿名函数不能单独定义与使用 function foo() { console.log('普通函数'); } // 去掉函数名 foo function () { // SyntaxError: Function s

深入理解Angular中的$apply()以及$digest()

reference:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们. 探索$apply()和$digest() AngularJS提供了一个

Angular中的jsonp

1.一般我们使用Angualr中的jsonp值这样使用的:注入$http服务 这样使用jsonp的方式可以支持多数api,但是douban不支持无法使用 1 module.controller('InTheatersController',['$scope','$http', function($scope,$http){ 2 4 var doubanApiAddress = 'https://api.douban.com/v2/movie/in_theaters'; 5 6 /!*在angua

Angular 中得 scope 作用域梳理

$scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 $scope,同样的 $scope 发生改变时也会立刻重新渲染视图. 有了 $scope 这样一个桥梁,应用的业务代码可以都在 controller 中,而数据都存放在controller 的 $scope 中. $rootScope Angular 应用启动并生成视图时,会将根 ng-app 元

Angular中的内置指令和自定义指令

NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减少DOM操作,实现数据绑定,与业务逻辑进行交互. How: 指令主要分为两种:内置指令和自定义指令,通过下面的例子,简单记录一下如何去使用. 内置指令 在官方API文档上罗列了很多指令,内置指令可以分为:普通指令 和 事件指令,他们都是作用于HTML之上的,通过添加属性的方式来实现的.简单看一下一些

Angular中的$q的形象解释及深入用法

作者:寸志链接:https://zhuanlan.zhihu.com/p/19622332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 早上,老爸说:"儿子,天气如何?" 每周一早上,老爸问儿子下午的天气情况,儿子可以到自家房子旁边小山上使用望远镜来观看.儿子在出发时许诺(Promise)老爸(会通知老爸天气情况). 此刻,老爸决定,如果天气不错,明天就出去捕鱼,否则就不去.而且如果儿子无法获得天气预报的话,也不去捕鱼. 30分钟左右,儿子回来了,每周