gpt4 book ai didi

javascript - 如何从指令更新 $scope 值

转载 作者:行者123 更新时间:2023-12-03 06:28:38 26 4
gpt4 key购买 nike

我是一个动态循环的创意指令。其中每个输入名称都是动态创建的。同样,我想根据问题更新范围值。 $scope 对象名称应该是动态的。像 $scope.answers.xxx其中 xxx 是问题名称。
$scope.question 有所有问题
并希望在 $scope.answers 中维护答案。

指令函数

function textControlDir()
{
return {
transclude: true,
restrict: 'E',
/*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)
{
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;
}
}
};
}

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" ></text-control-dir>
</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>

为完整代码创建了plunker http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview

最佳答案

如果没有 scope.$applyngModelController,则无法从链接函数更新作用域

<div ng-repeat="que in questions[$state.current.name]">
<div ng-if="que.QuestionData._fieldType === 'text'" >
<input type="text" data-ng-model="que.QuestionData.Answer">
</div>
</div>


var app = angular.module("app",[]);

var ctrlFn = function(){
$scope.questions = questions;\\assign scope here

};
var ctrl = app.contoller('ctrl',ctrlFn);

ctrlFn.$inject = ['$scope'];

关于javascript - 如何从指令更新 $scope 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38530647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com