Почему моя директива не распознает ее параметры? - PullRequest
0 голосов
/ 22 октября 2018

Я пересматриваю старые классы и пытаюсь закончить упражнения, которые раньше не мог делать.Этот класс в Ionic1, используя Angular1.

У меня есть директива, использующая два параметра;первый - это объект, данные которого должны отображаться, а второй - параметр, позволяющий скрыть / показать некоторые элементы на дисплее

Вот представление, реализующее контроллер:

<ion-list>
      <film-directive 
        ng-repeat="tmpMovie in myController.movieList" 
        movie="tmpMovie"
        displayBtnAddFav="false"
      ></film-directive>
</ion-list>

И вот конструкция директивы:

const FilmDir = function(){
    return {
        "restrict":"E",
        "scope":{
            "movie"              :"=",
            "displayBtnAddFav"   :"&"
        },
        "template":`
            <ion-item>  
                <p ng-if="displayBtnAddFav">DISPLAY WHEN TRUE</p>
                <p ng-if="!displayBtnAddFav">DISPLAY WHEN FALSE</p>
            </ion-item>`,
        "controller":function($scope){
            //TODO
        }
    }
};

Все файлы имеют правильные ссылки.Моя директива отображается в виде, но значение «displayBtnAddFav» интерпретируется неправильно.«DISPLAY WHEN TRUE»

всегда отображается

Я пытался:

  • вызывать директиву с displayBtnAddFav = "false"
  • вызывать директиву с displayBtnAddFav= false
  • замена логического значения на строку ("a" или "b") и использование ng-if = "displayBtnAddFav === 'a'"

Ничего не работаеткак и предполагалось, и у меня, кажется, нет вариантов.Кто-нибудь из вас увидит, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Большое спасибо Кайлу за ваш вклад.

После еще нескольких тестов кажется, что вы правы, несмотря на то, что документировал мне.Еще один важный момент: я понял, что директиве не нравятся аргументы «camelCase»: мне пришлось изменить displayBtnAddFav на displaybtnaddfav , чтобы она работала правильно.

0 голосов
/ 24 октября 2018

Так что я думаю, что проблема здесь заключается в привязке области действия:

Согласно угловой документации: & bindings are ideal for binding callback functions to directive behaviors.(https://docs.angularjs.org/guide/directive)

Различные привязки идеально подходят для разных сценариев. Попробуйте изменить его с & на =. Это должно позволить angular интерпретировать логическое значение вашей попытки пройти правильно.

const FilmDir = function(){
    return {
        "restrict":"E",
        "scope":{
            "movie"              :"=",
            "displayBtnAddFav"   :"="
        },
        "template":`
            <ion-item>  
                <p ng-if="displayBtnAddFav">DISPLAY WHEN TRUE</p>
                <p ng-if="!displayBtnAddFav">DISPLAY WHEN FALSE</p>
            </ion-item>`,
        "controller":function($scope){
            //TODO
        }
    }
};
...