在AngularJS世界之外使用$ scope。$ apply()

时间:2014-08-28 18:24:41

标签: angularjs

我创建了jQuery小部件,它基本上为本机jQuery UI Datepicker添加了更多功能和CSS样式。我使用onSelect选项为datepicker相应地更新<input>。问题是即使输入发生变化,$ scope的模型也不会改变。我知道我需要使用$ scope。$ apply()以某种方式通知角度输入已经改变。

我尝试了以下但是没有用。

this.options.onSelect = function (dateText, inst) {


                $el.val(dateText);
                that.$scope.$apply(); // This isn't working. I think I need to do something else
                that.wrap.hide();


                jQuery(document).find('.iconalt').hide();


                if (that.options.afterSelect !== undefined) {
                    that.options.afterSelect();
                }
            }

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案。我需要在调用$ apply()

之前更新模型
this.options.onSelect = function (dateText, inst) {


                $el.val(dateText);
                that.$scope.date = dateText; // Adding this worked
                that.$scope.$apply(); 
                that.wrap.hide();


                jQuery(document).find('.iconalt').hide();


                if (that.options.afterSelect !== undefined) {
                    that.options.afterSelect();
                }
            }