Как выполнить ng-change после загрузки данных в пользовательскую директиву

Я написал пользовательскую директиву в angular js, которая доступна в plnkr, когда директива загружен, он уже вызывает функцию change() на MainCtrl, мне нужно остановить функцию change() до тех пор, пока данные не загрузятся в директиву, и после этого она должна начать отслеживать изменения на входе, который находится внутри директивы, и, кстати, измененный ( ) должна находиться в MainCtrl, как в примере. остановить выполнение ng-change перед загрузкой данных в директиву? вот код:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = "someName";
  $scope.statusText = "unChanged";
  $scope.changed = function(){
          $scope.statusText = "changed";
      };
});


app.directive("myDirective", function () {
    return {
        restrict: 'EA',
        scope: {
            ngModel: "=",
            ngChange: "="
        },
        templateUrl: "template.html",
        link: function ($scope, elem, attrs) {



        }
    }
});
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="[email protected]" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">

    <my-directive ng-model="name" ng-change="changed()"></my-directive>
    <p>{{statusText}}</p>

    <script type="text/ng-template" id="template.html">
      <input type="text" ng-model="ngModel" ng-change="ngChange" >
    </script>
  </body>

</html>

person Aaron    schedule 11.04.2017    source источник


Ответы (1)


  • вам нужно изменить свойство получения вашей директивы ngModel и ngChange, оно конфликтует со встроенными директивами angularhs.
  • используйте '&', если вы хотите вызвать функцию из директивы

обратитесь к этому plunker (я только что ответил на ваш вопрос).

person Pengyy    schedule 11.04.2017