【发布时间】:2014-02-21 15:49:29
【问题描述】:
我正在创建指令来概括控制从 javascript 输入的数据。
所以我将文本字段的选项指定为:
$scope.textfield = { name:"abcd", label: "abcd", placeholder: "xyz", required: true };
指令为:
<text-input details="textfield" ng-model="abc.variable"></text-input>
指令代码如下:
csapp.directive("textInput", function () {
return {
scope: {
details: '=',
ngModel: '='
},
restrict: 'E',
template: '<input-display label="{{details.label}}" class="{{details.class}}" required="{{details.required}}">' +
'<input type="text" name={{details.name}} placeholder="{{details.placeholder}}" ng-required="{{details.required}}" data-ng-model="ngModel"/>' +
'</input-display>'
};
});
父指令代码如下:
csapp.directive("inputDisplay", function () {
return {
scope: {
label: '@',
class: '@',
required: '@'
},
transclude: true,
restrict: 'E',
template: '<div class="control-group" class="{{class}}">' +
'<div class="control-label">{{label || "Text"}} {{ required.toString() === "true" ? "*" : ""}}' +
'</div>' +
'<div class="controls" ng-transclude>' +
'</div>' +
'</div>'
};
});
如果我使用单个指令并合并两个指令的模板,则绑定有效,但如果我使用单独的指令进行布局和输入,则它不起作用。
我曾尝试使用点运算符 ngModel,但它仍然无法正常工作。
【问题讨论】:
-
你能用相关代码设置一个plunker吗
-
这是因为你在作用域中创建作用域。也就是说控制器>textInput 指令>inputDisplay 指令。这让我想到了下一点,莱昂纳多·迪卡普里奥可能会开始侵犯你的梦想,所以要小心。
标签: angularjs angularjs-directive angularjs-scope