Angular JS,在指令中从控制器中更新$scope
Angular JS, update $scope from controller in directive
我有以下情况:
在我的应用程序中,我有一个测验,我将分数和当前问题存储为$scope.current
, $scope.score
在MainCtrl
中,然后我有一个名为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
?
在你有指令的情况下,想要更新父控制器范围,我认为最好使用模型与点.
为此你需要在父控制器
中稍微改变一下模型$scope.quiz = {
score: 0
current: 0
}
那么在指令中你可以做
$scope.quiz.score = 'whatever, really'
$scope.quiz.current = 'current index'
如果你引用一个像quiz.score
这样的模型,那么它不会在当前范围内创建score
,而是会找到父模型quiz
并更改score
希望你能理解
相关文章:
- 如何从另一个控制器更新控制器的ng重复模型
- 可以从控制器更新工厂,但不能从指令更新
- ASP.NET Web API 控制器更新行
- 从另一个 Angular 控制器更新 ng-repeat
- 从控制器更新值时出现 ng-if 问题
- 离子和角度 - 从控制器更新/刷新视图
- AngularJS:从另一个控制器或JS调用控制器更新功能
- 使用滑块控制器更新地图数据/阴影?包括示例
- angularJS$watch在使用控制器更新数据时不在指令中工作
- ng模型没有从控制器更新到视图
- AngularJS从其他控制器更新$scope
- 从任何观察到的控制器更新模板
- 从父控制器更新服务值
- Ember.js从应用控制器更新模型
- AngularJS:如何从子控制器更新指令作用域
- 如何在Ember.js中使用不同的控制器更新hasMany
- 从多个控制器更新页面部分的最佳方式
- 在AngularJS中跨控制器更新$scope变量
- 在 CodeIgniter 中使用 AJAX 从控制器更新 DIV 框
- 从另一个控制器更新ng-repeat上的复杂滤波器