0
我試圖更新change.notify.asc關於變化事件的值。但不能在當前鏈接功能中更改值。Angular js:element.val在指令鏈接函數中不起作用
指令
function textControlDir()
{
return {
transclude: true,
restrict: 'E',
require:'ngModel',
/*scope: {
queObj: '=',
selectedAns: '='
},*/
template: '<div class="form-group">\n\
<label for="{{queObj._attributeName}}" class="col-sm-5 control-label">{{queObj._text}}</label>\n\
<div class="col-sm-6"><input type="text" name="{{name}}" class="form-control" id="{{id}}" value="{{selectedAns}}"></div>\n\
</div>'
,
link: function (scope, element, attrs,ngModel)
{
var queObj = scope.que.QuestionData;
scope.queObj = scope.que.QuestionData;
scope.name = queObj._attributeName;
scope.id = queObj._attributeName;
var selectedAns = '';
if(scope.answers)
{
selectedAns = scope.answers[scope.name];
}
if(selectedAns && selectedAns != '')
{
scope.selectedAns = selectedAns;
}
else
{
scope.selectedAns = scope.queObj._pageAttributes.defaultValue;
}
element.bind('change',function(){
scope.answers[scope.name] = document.getElementById(scope.id).value;//element.value();
console.log(scope.answers[scope.name]);
scope.$apply();
})
}
};
}
HTML
<div ng-repeat="que in questions[$state.current.name]">
<div ng-if="que.QuestionData._fieldType === 'text'" >
<text-control-dir data-que-obj="que.QuestionData" data-ng-model="answers[que.QuestionData._attributeName]"></text-control-dir>
{{answers[que.QuestionData._attributeName]}}
</div>
<div ng-if="que.QuestionData._fieldType === 'select'" >
<select-control-dir data="que.QuestionData"></select-control-dir>
</div>
<div ng-if="que.QuestionData._fieldType === 'radio'" >
<radio-control-dir data="que.QuestionData"></radio-control-dir>
</div>
<div ng-if="que.QuestionData._fieldType === 'hidden' && que.QuestionData._attributeName != 'CBQ'" >
<hidden-control-dir data="que.QuestionData"></hidden-control-dir>
</div>
</div>
在$ scope.questions已經全部問題,我index.html中循環。對於每個問題,我正在創建一個輸入。如果$ scope.answers具有我在輸入框中顯示的特定輸入的值。這很多工作。現在,如果用戶在輸入框中更改任何內容,我希望在答案中設置值。
下面的代碼無法正常工作指令(element.val;給未定義)
element.bind('change',function(){
scope.answers[scope.name] = document.getElementById(scope.id).value;//element.value();
console.log(scope.answers[scope.name]);
scope.$apply();
})
類型錯誤:element.value是不是功能 –
對不起,這是一個函數val。 – dfsq
這個打印函數(arg1,arg2)在我上面的代碼中我怎樣才能得到輸入框值 –