передать строковую переменную из контроллера в директиву angularjs - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь передать строковую переменную из моего контроллера в директиву, которая использует изолированную область видимости.Мне удалось передать объект и функцию, но я не могу заставить это работать!

контроллер:

angular.module("app").controller("myCtrl", function($scope) 
{
    //data that needs to be passed to the directive
    $scope.myParams = $scope.params; //object
    $scope.myDateOrder = $scope.dateOrder; //string
});

html:

 <div ng-controller="myCtrl">
        <my-dir params="myParams" dateOrder="myDateOrder"> 
        </my-dir>
    </div>

директива:

angular.module("app").directive("myDir", [
    function() {
        return {
            restrict: "E",
            scope: {
                checkPermissions: "&", //pulled from contact directive -> method/function
                params: "=", //passed object though from smwAddCustomerBank -> two way binding
                dateOrder: "@" //passed string value from smwAddCustomerBank -> one way binding
            },

DateOrder не работает.Если я укажу его на console.log в моем контроллере, я смогу увидеть строку, если я зарегистрирую ее в своей директиве, она не определена.

Есть идеи?

1 Ответ

0 голосов
/ 23 ноября 2018

Атрибуты директивы должны быть кебаб-кейс , а не camelCase :

<div ng-controller="myCtrl">
    ̶<̶m̶y̶-̶d̶i̶r̶ ̶p̶a̶r̶a̶m̶s̶=̶"̶m̶y̶P̶a̶r̶a̶m̶s̶"̶ ̶d̶a̶t̶e̶O̶r̶d̶e̶r̶=̶"̶m̶y̶D̶a̶t̶e̶O̶r̶d̶e̶r̶"̶>̶ ̶
    <my-dir params="myParams" date-order="myDateOrder"> 
    </my-dir>
</div>

Для получения дополнительной информации см. AngularJS Developer Guide - Нормализация директив.


Спасибо - для всех, кто борется с этим, все, что мне нужно было сделать, это: params="myParams", date-order="{{ myDateOrder }}"

Чтобы избежатьиспользуя интерполяцию ({{ }}), используйте одностороннюю привязку с "<" вместо привязки атрибута с "&":

    scope: {
        checkPermissions: "&", //pulled from contact directive -> method/function
        params: "=", //passed object though from smwAddCustomerBank -> two way binding
        ̶d̶a̶t̶e̶O̶r̶d̶e̶r̶:̶ ̶"̶@̶"̶
        dateOrder: "<" //passed string value from smwAddCustomerBank -> one way binding
    }

Затем просто выполните:

 <my-dir params="myParams" date-order="myDateOrder"> 

Для получения дополнительной информации см. Справочник по API AngularJS - объем .

...