我制作了自己的预先输入指令,自动填充了一些名称。我在两个不同的模态中在我的页面上具有相同的类型。其中一个需要获得每个名字,而另一个只需要获得一些名字。最后加载的哪个类型提前写入第一个预先输入类型的数据。因此,如果我加载一个应该首先得到一些名字的那个,那个得到所有名字的那个。他们俩都抓住了所有的名字。
非常感谢任何帮助。
这是我的指示:
templates.directive("referralTypeAhead", function (Referrals,AlertFactory) {
return {
restrict:"EA",
replace: true,
require:'ngModel',
// scope: {everyone: "@"},
template: '<input type="text" typeahead="patient.id as patient.plast + \', \' + patient.pfirst + \' \' + patient.mi for patient in patients | filter:$viewValue | limitTo:8" typeahead-min-length="3" typeahead-editable="false" typeahead-input-formatter="formatLabel($model)" class="form-control" />',
link: function(scope, element, attrs, ngModel) {
var every = attrs.everyone ? attrs.everyone : "false";
if (everyone === "false") {
Referrals.getSomeNames({everyone:every}).$promise.then(function(result) {
var patients = result;
for (var i = 0; i < patients.length; ++i) {
if (!patients[i]['mi']) {
patients[i]['mi'] = '';
}
}
scope.patients = patients;
},function(result) {
AlertFactory.addAlert('warning','ERROR: Unable to load data for the referral-type-ahead');
});
}
else {
Referrals.getAllNames({everyone:every}).$promise.then(function(result) {
var patients = result;
for (var i = 0; i < patients.length; ++i) {
if (!patients[i]['mi']) {
patients[i]['mi'] = '';
}
}
scope.patients = patients;
},function(result) {
AlertFactory.addAlert('warning','ERROR: Unable to load data for the referral-type-ahead');
});
}
scope.formatLabel = function(model) {
if (scope.patients) {
for (var i = 0; i < scope.patients.length; ++i) {
if (scope.patients[i].id == model) {
return scope.patients[i].plast + ', ' + scope.patients[i].pfirst + ' ' + scope.patients[i].mi;
}
}
}
};
}
};
});
这是我的HTML:
<referral-type-ahead everyone="false" ng-model="patient.id"></referral-type-ahead>
<referral-type-ahead everyone='true' ng-model="patient.id"></referral-type-ahead>
我不明白为什么第二组数据会覆盖第一组数据。
答案 0 :(得分:1)
当您创建可重复使用的组件/小部件/指令时,请创建isolateScope。
在您的指令定义中声明scope: {}
它根据该指令的使用创建私有的非共享范围。
更多关于来自角度文档的isolateScope。
顾名思义,指令的隔离范围是隔离的 除了您已明确添加到范围的模型之外的所有内容:{} 哈希对象。这在构建可重用组件时很有用,因为 它可以防止组件更改模型状态,除了 您明确传入的模型。
注意:通常,范围原型继承自其父级。一个 孤立的范围没有。请参阅“指令定义对象 - 范围” 有关隔离范围的更多信息,请参阅。
最佳实践:使用scope选项创建隔离范围 制作要在整个应用中重复使用的组件。