为什么在指令控制器选项中指定控制器时,角度数据绑定不起作用? $scope.emailInvalid.text
通常应该映射到type.text
,但就我而言,没有任何内容可以显示。
JS:
.directive('alert', function () {
return {
template: '<div>{{type.text}}</div>',
restrict: 'E',
scope: {
type: '='
},
controller: function ($scope) {
$scope.emailInvalid = {
text: 'Text Alert Two'
};
}
};
});
HTML:
<alert type="emailInvalid"></alert>
当我定义一个单独的控制器并在HTML中使用ng-controller
传递它时,一切都按预期工作。
这是plunker。
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,我找到了解决方案:
问题在于将$scope.emailInvalid
映射到$scope.type
时角度失败。我在<alert type="emailInvalid"></alert>
的示例中所做的是将对象emailInvalid
传递给指令。 Angular正在我使用该指令的范围模型中查找此对象。显然,这个物体不存在,角度不能映射任何东西。
我缺少的部分是,我使用指令控制器选项定义的控制器定义在与ng-controller
使用的控制器不同的范围内。
要解决此问题,我现在传递一个字符串而不是一个对象,并使用switch / case来映射警报类型。