gpt4 book ai didi

javascript - angular.js 两个指令,第二个不执行

转载 作者:搜寻专家 更新时间:2023-11-01 05:24:01 25 4
gpt4 key购买 nike

我在 angular.js 模块中定义了两个指令。第一个声明的 HTML 元素执行它的指令,但使用另一个指令的第二个 HTML 元素不执行它。

给定这个 HTML:

<div ng-app="myApp">
<div ng-controller="PlayersCtrl">
<div primary text="{{primaryText}}"/>
<div secondary text="{{secondaryText}}"/>
</div>
</div>

和这个 angular.js 代码:

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

function PlayersCtrl($scope) {
$scope.primaryText = "Players";
$scope.secondaryText = "the best player list";
}

myApp.directive('primary', function(){
return {
scope: {
text: '@'
},
template: '<h1>{{text}}</h1>',
link: function(scope, element, attrs){
console.log('primary directive');
}
};
});

myApp.directive('secondary', function(){
return {
scope: {
text: '@'
},
template: '<h3>{{text}}</h3>',
link: function(scope, element, attrs){
console.log('secondary directive');
}
};
});

生成的 HTML 只是“主要”指令,“次要”指令不呈现:

<div ng-app="myApp" class="ng-scope">
<div ng-controller="PlayersCtrl" class="ng-scope">
<div primary="" text="Players" class="ng-isolate-scope ng-scope">
<h1 class="ng-binding">Players</h1>
</div>
</div>
</div>

控制台输出也验证了这一点,因为只输出了“主要指令”文本。

然后如果我切换主要元素和次要元素的顺序,secondary 指令会被执行而primary 指令不会:

<!-- reversed elements -->
<div secondary text="{{secondaryText}}"/>
<div primary text="{{primaryText}}"/>

<!-- renders this HTML (secondary, no primary) -->
<div ng-app="myApp" class="ng-scope">
<div ng-controller="PlayersCtrl" class="ng-scope">
<div secondary="" text="the best player list" class="ng-isolate-scope ng-scope">
<h3 class="ng-binding">the best player list</h3>
</div>
</div>
</div>

这是为什么?我做错了什么?

最佳答案

div 不是 void elements并需要一个结束标记。

<div ng-app="myApp">
<div ng-controller="PlayersCtrl">
<div primary text="{{primaryText}}"></div>
<div secondary text="{{secondaryText}}"></div>
</div>
</div>

Example

关于javascript - angular.js 两个指令,第二个不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com