2014-02-18 59 views
3

IM面临一个奇怪的问题,我已经定义了一个对象(全球范围内为应用程序),它保存阵列 物体看起来像Angularjs:与数组赋值问题

var _global = { 
     document: {}, // represent selected item 
    }; 

,并在我的服务,我有这样的事情

_global.document.signers =[{name:'test',email:'[email protected]'}]; 

其工作正常。现在如果我把元素像

_global.document.signers.push({name:'test',email:'[email protected]'}); 

和控制器我使用

var signers = _global.document.signers; 

它工作正常。视图获取新的值

但如果更新如果我做了什么

_global.document.signers = [{name:'newTest',email:'[email protected]'}]; 

全局对象被更新,但视图不会呈现新的价值,如果我改变它推视图开始呈现新的价值观

有人可以指导我做错了。 任何帮助将不胜感激

更新

感谢@shani的帮助我一直在使用

var draft = globalService.getGlobal(); //global service for maintaining global objects 
$scope.draft = draft; 

,并鉴于

<ul class="list-unstyled font-11px" > 
     <li ng-repeat="(signerIndex, signer) in draft.document.signers"> 
    </li></ul> 
+0

首先,不要使用全局变量,请使用服务!其次它可能是一个$手表问题,所以发布您的控制器/查看代码 –

+0

我已经定义了一个全局服务来主线全局变量。其次我没有使用手表wat我已经在我的控制器完成$ scope.signers = _global.document.signers – Salman

+0

再次显示您的代码(控制器/视图) –

回答

2

将您的全局对象,以解决它你控制器范围,如果服务对象发生更改,则服务是单例,则控制器将自动执行一次对它做出反应。

+0

可以解释一下更多:)基本上我没有得到笏你的意思是分配你的全局对象到你的控制器 – Salman

+0

我在控制器中做什么基本上是 var object = globalservice。 globalobject(); $ scope.signers = object; –

+0

thanku其工作正常我的错误是,我直接分配给签署者,而不是对象再次感谢 – Salman