为什么我的指令不能识别它的参数?

Why doesn't my directive recognize its parameters?

我正在复习旧的 classes 并尝试完成我以前无法完成的练习。这个 class 在 Ionic1 中,使用 Angular1。

我有一个使用两个参数的指令;第一个是要显示数据的对象,第二个是hide/show显示中某些元素的参数

这是实现控制器的视图:

<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"

一直显示

我试过了:

一切都没有按预期进行,我似乎别无选择。你们中有人看到我做错了什么吗?

所以我认为这里的问题是范围绑定:

根据 angular 文档:& 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
        }
    }
};

非常感谢凯尔的意见。

经过更多测试,尽管医生告诉我的内容,您似乎是对的。 我意识到该指令不喜欢 "camelCase" 参数的另一个关键点:我必须为此将 displayBtnAddFav 更改为 displaybtnaddfav才能正常工作。