javascript - AngularJS:指令和 View 更新之间的通信

标签 javascript angularjs angularjs-directive

我是 AngularJS 的新手。我搜索了很多信息并找到了一些适合我的不错的解决方案( 奥 git _a )。第一个指令中的代码如下所示:

angular.module('app')
  .directive('myItem', function () {
    return {
      templateUrl: 'views/item.html',
      restrict: 'C',
      controller: function ($scope, $element) {
        $element.closest('.models-slider').on('afterChange', function(event, slick, currentSlide){
          $scope.$emit('model:updated', currentSlide);
        });
      }
 })

第二个:

angular.module('app')
  .directive('model', function () {
    return {
      templateUrl: 'views/model.html',
      restrict: 'E',
      controller: function ($scope, $element) {
       $scope.$on('model:updated', function(e, data){
         $scope.item = data;
         console.log('scope',  $scope); // Here I see right value of item
       });
     });
    }
 });

但问题出在 view/model.html 内部:

<div class="left-block">
  <a class="back" href="#"></a>
  <div class="model-wrapper">
    <div class="front-view active">
      <img src="images/model.png"/>
      <img ng-if="item.frontImage" ng-src="{{ item.frontImage }}"/>
    </div>
    <a class="rotate"></a>
  </div>
</div>

它不更新。我的代码有什么错误吗?如何更新我的 View ?

最佳答案

myItem 指令中的 scope.$apply 内发出“model:updated”,因为 afterChange 是非- Angular 事件

关于javascript - AngularJS:指令和 View 更新之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335733/

相关文章:

javascript - 如何使用 jQuery 检测某个单选按钮是否被选中?

javascript - 从 Angular 到 Laravel 的 POST 不起作用

javascript - 如何在 Node JS 中获取新行并将其作为 JSON 传递并将其保存在文本文件中

javascript - 如何启用/禁用表格行内容 - Angularjs

JavaScript:BannerPlugin.js 导致错误:str.indexOf 不是函数

javascript - 很难调试错误 - 第 2 列的 token '{' 无效 key

javascript - 跨源请求阻止 Angular JS Put 请求

angularjs - 将 AngularJS 范围变量从指令传递到 Controller 的最简单方法?

javascript - 从数组中删除元素并更新表

javascript - Angular Js 中的过滤器