【发布时间】:2018-06-28 10:39:23
【问题描述】:
如何从链接函数外的 angularjs 指令调用控制器作用域
$scope 此处为未知提供商:
app.directive('checkId', function($parse,$scope, $http){//here $scope is unknown provider
return{
restrict:'A',
link: function(scope, element, attrs){
element.bind('change', function(){
var filteredLength = $parse(attrs.filtered)(scope);
console.log(filteredLength);
var newFilteredArray = scope.stateList.filter(function(values){
return values.toUpperCase() == scope.TRDetail.memberNo.toUpperCase();
});
if(filteredLength == 0){
console.log("if called");
scope.TRDetail.memberNo = "";
}else if(newFilteredArray.length == 0){
scope.TRDetail.memberNo = "";
};
scope.$apply();
thisIsCalled(scope.TRDetail.memberNo);
});
}
};
function thisIsCalled(someData){
if(someData == ""){
alert("NOT doing some $http srvices");
}else{
$http.post("SomeURL", someData).then(function(response, error){
if(error){
alert("sorry no data found" + error.message);
}else{
$scope.TRDetail.memberName = response.data;
}
});
};
};
});
HTML:
<div class="form-group col-md-3">
<label>MemberShip NO:<span ng-if="(stateList|filter:TRDetail.memberNo).length==0" style="color:red;">(nothing found)</span></label>
<input list="idList" class="form-control" name="browser"
ng-model="TRDetail.memberNo"
filtered="(stateList|filter:TRDetail.memberNo).length"
check-id>
<datalist id="idList">
<option ng-repeat="x in stateList">{{x}}</option>
</datalist>
</div>
<div class="form-group col-md-9">
<label>Member Name</label>
<input type="text" ng-disabled="true"
ng-model="TRDetail.memberName" class="form-control"
placeholder="type name here..">
</div>
我无法通过链接功能在外部更新TRDetail.memberName。
有什么帮助,怎么办?
【问题讨论】:
-
@georgeawg,我想使用
thisIsCalled从链接函数传递一个变量;然后这个函数将更新 html 中的父范围。 -
@GuillaumeGeorges 建议的副本不适用于这种情况。
标签: angularjs angularjs-directive angularjs-scope angularjs-ng-model