如何在任何地方更改相同的值 - 在服务,控制器,外角?

时间:2014-01-29 08:54:24

标签: javascript html angularjs

服务实施

myService = function()
{
    this.config = {
        show0: false,
        show1: true,
        role : -1,
        id : -1; 
    };
};

在控制器中,我映射配置值

$scope.config = myService.config; //I guess this by reference, isnt it???

在这些控制器的模板中,例如$ scope.config.show0用于例如NG-模型


现在我的threejs代码中的角度

我使用之前定义的注入器获取服务,并根据特定条件更改某些值

var service = window.my.injector.get('myService');
service.config.id = 1991;

现在这个值不会立即反映在HTMl模板中,

Source = {{config.id}}仍然呈现为Source = -1

但是当我点击同一模板中的其他按钮时,该按钮被映射到同一范围内的任何其他值

Source = {{config.id}}仍然呈现为1991


我应该如何在

之后立即强制重新渲染或刷新我的非角度代码
var service = window.my.injector.get('myService');
service.config.id = 1991;
///do something to refresh that controller

我使用的服务有误吗?如果不是通过服务,我应该如何在角度控制器,模板和非角度代码中使用此配置?

无法更改$ scope.config属性值并通过注入器检索服务来更改角度以外的值会更改各处的值吗?

1 个答案:

答案 0 :(得分:0)

这是因为角度摘要周期不会从你的threejs代码开始。我不确定你的三个js代码在哪里,但尝试使用$ scope。$ apply来启动摘要周期,它应该可以正常工作。

如果你可以分享一个jsFiddle,我可以更好地理解你想要达到的目标,但正如我所说的那样,没有发生这种情况的原因是摘要周期没有起作用。