gpt4 book ai didi

javascript - Angular JS,从指令中的 Controller 更新 $scope

转载 作者:行者123 更新时间:2023-12-03 08:36:09 25 4
gpt4 key购买 nike

我有以下情况:

在我的应用程序中,我有一个测验,我将分数和当前问题存储为 $scope.current , $scope.scoreMainCtrl ,然后我有一个名为 Question 的指令,在其中显示问题和选择,例如:

angular.module('quiz')
.directive('myQuestion', function() {
return {
restrict: 'EA',
replace: true,
scope: {
question: '=',
index: '='
},

link: function(scope) {



scope.validate = function(index) {
var isCorrect = index === scope.question.correct;

if(isCorrect) {
console.log('Correct!');


//$scope.score += 10 ($scope score from MainCtrl)

}

if(!isCorrect) {
console.log('Incorrect!');

scope.correct = false;
}

//$scope.current += 1;

};


templateUrl: 'assets/javascript/tpl/question.html'
};
});

在我的 html 中,我有以下结构:

<div class="quiz">

<h2>Current Question: {{current}}</h2>
<h2>Your score: {{score}}</h2>

<my-question ng-repeat="q in questions track by $index"
ng-if="isCurrent($index)" //in controller i compare $index with $scope.current
question="q"
index="$index"></my-question>

</div>

我的问题是,如何更新 $scope.score$scope.current来自指令链接函数?

有人可以向我解释一下最好的方法吗?

最佳答案

如果您有指令并想要更新父 Controller 范围,我认为最好使用带有点的模型。

为此,您需要在父 Controller 中稍微更改模型

$scope.quiz = {
score: 0
current: 0
}

然后在指令中你可以这样做

$scope.quiz.score = 'whatever, really'
$scope.quiz.current = 'current index'

如果您引用类似quiz.score的模型,那么它不会在当前范围内创建score,而是会找到父模型quiz code> 并更改分数

希望这是有道理的

关于javascript - Angular JS,从指令中的 Controller 更新 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33212882/

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