2014-02-09 3 views

ответ

1

Если вы свяжете myAttr через два пути связывания в вашей директиве вы можете просто передать его с тем же именем в вашей функции, поскольку объем MYFUNCTION устанавливается с помощью директивы ngClick.

// template 
<div ng-controller="someController"> 
    myModel: {{ myModel }} 
    <my-element my-attr="myModel" ng-click="myFunction(myModel)" /> 
</div> 

// js 
angular.module("myModule").controller("someController", function ($scope) { 
    $scope.myModel = { number: 42 }; 
    $scope.myFunction = function (data) { console.log(data); } 
}).directive("myElement", function ($interval) { 
    return { 
     restrict: "E", 
     scope: { // define an isolated scope for you directive 
      myAttr: "=", // set two-way-binding for 'my-attr' 
     }, 
     link: function ($scope, $element, attributes) { 
      // count up the number in myModel. 
      // myModel can be accessed via myAttr because it is defined 
      // in the scope of the directive. 
      $interval(function() { 
       // you can access 
       $scope.myAttr.number += 1; 
      }, 1000); 
     } 
    }; 
}); 

Вы можете увидеть рабочий пример в ссылке Plunker.

Важно: Вы не можете получить доступ к $scope.myModel в директиве, потому что вы изолированы вам сферу, и вы должны использовать $scope.myAttr Если вы не установили рамки атрибута вы получите тот же объем, как снаружи директивы, но затем вы не получаете легкое сглаживание и должны оценивать свои атрибуты директивы на свой собственный $scope.$eval(attributes.myAttr).

Example on Plunker

+0

Но как заставить его работать без ввода? Значение атрибута изменяется директивой. – latata

Смежные вопросы