AngularJS 为什么 我在controller里修改了 变量的值,dom 没有改变

‘use strict‘
app.controller(‘xxxxx‘, function($scope) {
    $scope.aaaa =null;

    $scope.chooseImage = function(){
        wx.chooseImage({
            sourceType: [],
                success:function(res){
                    $scope.aaaa =1
                }
            });
        };
});
<p ng-click="chooseImage()">{{aaaa}}</p>

点击后页面aaaa的值并不会 改变为 1

因为 wx.chooseImage 这个方法是微信的API, 并不在angular context里面,没有调用apply方法。

$apply方法使用情景:AngularJS 外部的控制器(DOM 事件、外部的回调函数如 jQuery UI 空间等)调用了 AngularJS 函数之后,必须调用$apply。在这种情况下,你需要命令 AngularJS 刷新自已(模型、视图等) ,$apply 就是用来做这件事情的。

之前看见同事写个$timeout(function(){}) 就好了,也是好奇。原来angular在$timeout方法里已经封装了apply方法。

我主要看了这两篇文章:

谈谈Angular关于$watch,$apply 以及 $digest的工作原理

《AngularJS》----$apply 与 $watch

时间: 2024-10-18 13:12:49

AngularJS 为什么 我在controller里修改了 变量的值,dom 没有改变的相关文章

进行同一Controller里的不同方法Get请求时,总是定位到Controller里的同一个方法的解决

环境:我用的是webapi+EF4.0+html搭建的环境 问题:进行同一Controller里的不同方法Get请求时,总是定位到Controller里的同一个方法,具体如下: 1.Controller里有如下两个方法: [HttpGet]        public HttpResponseMessage AddPersonToPersonInfo(string pno, string pname); [HttpGet]        public HttpResponseMessage Mo

EF里查看/修改实体的当前值、原始值和数据库值

EF里查看/修改实体的当前值.原始值和数据库值以及重写SaveChanges方法记录实体状态 - 心态要好 时间 2013-09-10 09:09:00 博客园_汪杰的cnBlogs 原文  http://www.cnblogs.com/oppoic/p/ef_dbpropertyvalues_toobject_clone_setvalues_changetracker_entries.html 本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetVa

ASP.NET MVC中 在controller 里将 Partial View 转化为字符串的方法

namespace Common.Helper { public static class ControllerExtension { //根据部分视图名称,把部分视图内容转换成字符串 public static string RenderPartialViewToString(this Controller controller, string partialViewName) { return controller.RenderPartialViewToString(partialViewN

Java接口里定义成员变量 说明

首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final 的.所以你可以这样写: public static final int i=10; 或则 int i=10;(可以省略掉一部分,在接口里的成员变量默认就是public static final) 注意在声明的时候要给变量赋予初值 解释: 首先你要弄清接口的含义.接口就是提供一种统

使用SetWindowPos API函数移动窗口后,还需修改Delphi的属性值,以备下次使用,否则就会出问题(不是API不起作用,而是使用了错误的坐标值)

单独改变坐标的代码如下,可不断左移: procedure TForm1.Button1Click(Sender: TObject); begin SetWindowPos(panel1.Handle, 0, panel1.Left-10, panel1.Top, panel1.Width, panel1.Height, SWP_NOZORDER + SWP_NOACTIVATE); end; 照理每次改变坐标,都会调用SetBounds,都会调用SetWindowPos函数,可是一旦我屏蔽Upd

【转】windows7 修改环境变量 和 用不用重启电脑的讨论

  原文:http://www.cnblogs.com/zhenmingliu/archive/2013/02/21/2921396.html   先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行"DOS命令提示符"或run cmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,关闭DOS窗口,这时,我的电脑>属性>高级>环境变量里PATH已经在Windows全局生效了. 不

[转]在Linux里设置环境变量的方法

在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量: 1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好,可用命令export查看

将Chrome调试器里的JavaScript变量保存成本地JSON文件

我写了一个系列的文章,主要用来搜集一些供程序员使用的小工具,小技巧,帮助大家提高工作效率. 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理器的替代者-Process Explorer 介绍一个强大的磁盘空间检测工具Space Sniffer 如何在电脑上比较两个相似文件的差异 程序员工作效率提升系列-推荐一个JSON文件查看和修改的小工具 我们在Chrome开发者工具的Console

u-boot-2014.10移植(7)修改环境变量的存储位置

原来环境变量存储在nor flash里, 前面mtdparts分区第二个分区就是params 现在修改环境变量到nand里, 搜索default environment 在Env_common.c函数里面: default_environment结构体default_environment结构体定义在env_common.c里面 其中有: #ifdef CONFIG_BOOTARGS "bootargs=" CONFIG_BOOTARGS "\0" #endif 这