【问题标题】:angularjs ngmodel doesn't update view when bind to an objectangularjs ngmodel 绑定到对象时不更新视图
【发布时间】:2015-01-21 03:29:43
【问题描述】:

代码如下:

---html---
<input type="text" ng-model="pageInfo.businessHours" name="businessHours" date-formatter="object|start|end||-||HH:mm" readonly  />
---js---
...
$scope.pageInfo = {
    businessHours: {
        start: new Date(),
        end: new Date()
    }
};

// when I change businessHours, the input value doesn't update
$scope.pageInfo.businessHours.start = new Date('2000-10-10'); // view doesn't update

问题是当$scope.pageInfo.businessHours 改变时,视图永远不会改变。

date-formatter 是我的自定义指令,将两个日期对象显示为08:10-20:30。)

那么,有什么想法吗?

【问题讨论】:

    标签: angularjs data-binding angular-ngmodel


    【解决方案1】:

    您绑定到pageInfo.businessHours 而不是pageInfo.businessHours.start,这两个是不同的,所以当您重置启动属性时,pageInfo.businessHours 并没有作为对象更改,但启动属性确实发生了变化。所以要么重置pageInfo.businessHours,要么绑定到pageInfo.businessHours.start 属性。

    希望这会有所帮助。

    【讨论】:

    • 我想绑定到pageInfo.businessHours,并且每当startend 属性发生变化时,ngmodel 都会更新视图。 $scope.$watchCollection('pageInfo.businessHours' 可以捕获属性变化,那么ngmodel有什么这种方法吗?
    • 为什么你不重新初始化 pageInfo.businessHours 成为一个新的对象,每次开始/结束属性之一改变时都有新的开始/结束值?
    • 这是一个解决方案,但并不完美。如果没有更好的答案,我会接受你的答案。非常感谢您的回答。
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2016-09-08
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多