从指令更新范围并使用另一个更新

时间:2015-11-24 15:04:36

标签: javascript jquery html angularjs angularjs-directive

问题在于:

我尝试做这样的事情:

  1. 点击指令触发事件
  2. 事件将数据发送到rootScope函数,该函数使用新数据
  3. 设置范围变量值
  4. 另一个指令在其模板中有一个ng模型,该模型应该反映先前已更改的var
  5. 应在视图和模型中更新数据。模型没问题(更新完成),但是视图更新似乎没有自动触发,它只在我点击"显示按钮"时更新。 (见小提琴)
  6. 这是我做的相应的jsfiddle,带有注释:

    http://jsfiddle.net/wkmm576m/7/

    以下是我认为制造麻烦的代码......:

    app.directive('addEditInput', function() {
        return {
            restrict : 'E',
            template : '<div id="editForm"><input type="text" ng-model="currentVar.name" /><br/></div>'
        }
    });
    

    事实上,我使用ng-model返回一个模板。但是当ng-model的值从其他地方改变时,它不会更新......

    Tbh,我对指令和范围通信有点困惑 - 数据....

    感谢您阅读/帮助

1 个答案:

答案 0 :(得分:2)

简短回答 - 你需要在顶级控制器中调用$scope.$applyhttp://plnkr.co/edit/QEjzlsJj4fh1eeqBXSvt?p=preview

长答案:你将常用的js函数绑定到通常的js事件,所以当用户点击元素时 - 你的函数会执行。就这样。当您使用ng-click时,它将触发摘要循环并且您的绑定将被更新。所以你需要手动触发它,所以你打电话给$scope.$apply

注意:最好不要在不需要的地方使用jquery。即使用$element.bind('click',function(){代替$().on...