javascript - AngularJS:在保持绑定(bind)的同时设置属性:有更好的方法吗?

标签 javascript angularjs

如果我想将服务中的某些属性设置为等于我从网络调用返回的数据,我可以这样做:

//SERVICE//
thisService.property = data;
//SERVICE//

在我的 Controller 中我可以做:

//CONTROLLER//
this.property = ThisService.property;
//CONTROLLER//

这样我就可以在 HTML 中绑定(bind)它并让它动态更新:

//VIEW//
{{property}}
//VIEW//

但是,如您所知,这是行不通的。 controller.property 仍然未定义,因为这一行:

thisService.property = data;

将为 thisService.property 创建一个新的引用,而在 Controller 中设置的旧引用将不会指向新数据。

所以,我要做的是将数据包装在另一个对象中,然后执行如下操作:

//SERVICE//
thisService.property = {};
thisService.property.property = data;
//SERVICE//

//CONTROLLER//
this.property = ThisService.property;
//CONTROLLER

//VIEW//
{{property.property}}
//VIEW//

这相当粗糙和丑陋。有没有更好、更清洁的方法来实现这一目标?

最佳答案

创建一个 getter。

Object.defineProperty(this, 'property',
                      { get: function() { return ThisService.property; }});

现在 Controller 的property 将始终引用当前服务的property

如果服务的值只设置一次并且永远不会再更改,那么我建议使用 promise。这会告诉我们更多关于正在发生的事情。

Plunker

关于javascript - AngularJS:在保持绑定(bind)的同时设置属性:有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32748257/

相关文章:

javascript - 从子组件响应父组件中的更新状态

asp.net-mvc - 对于 AngularJs 或 Backbone Js 或 KnockOutJs 最好的 asp.net mvc?

javascript - 使用 angular-modal-service (AngularJS) 自定义模式

angularjs - 使用 angularjs 播放 rtmp 流的最佳方式是什么?

javascript - 带有angularjs的 token

javascript - 自动 html 表单验证的属性是什么?

javascript - 渲染插入数组的未关闭的 html 元素

javascript - Jquery 改进,将多个 Accordion 放在一处

javascript - Angular 动画

c# - 这可以通过 javascript 实现吗?