请参阅以下jsfiddle。我在这里举了一个简单的例子来解释我想要实现的目标。
https://jsfiddle.net/nz9h6aje/1/
html页面:
<div ng-app="testApp" ng-controller="testCtrl">
1- <md-input-container>
<label>Question</label>
<input ng-model="models.Question1">
</md-input-container>
2- <md-input-container>
<label>Question</label>
<input ng-model="models.Question2">
</md-input-container>
<md-select placeholder="Dependency" ng-model="models.Denpendency" md-on-open="getQuestionSet()" style="min-width: 300px;" multiple>
<md-option ng-value="setQuestion" ng-repeat="setQuestion in setQuestions">{{setQuestion}}</md-option>
</md-select>
</div>
js file:
angular.module('testApp', ['ngAnimate',
'ngAria',
'ngMaterial']).controller('testCtrl',function($scope){
$scope.models={
Question1:"",
Question2:"",
Dependency:[]
}
$scope.getQuestionSet = function() {
$scope.setQuestions = [];
var tmpQuestion = 1 + " - " +$scope.models.Question1;
$scope.setQuestions.push(tmpQuestion);
tmpQuestion = 2 + " - " +$scope.models.Question2;
$scope.setQuestions.push(tmpQuestion);
};
$scope.$watch('models', function (newVal, oldVal) {
if (newVal.Question1 !== oldVal.Question1) {
var tmpQuestion = 1 + " - " +$scope.models.Question1;
$scope.models.Dependency[0] = tmpQuestion;
}
if (newVal.Question2 !== oldVal.Question2) {
var tmpQuestion = 2 + " - " +$scope.models.Question2;
$scope.models.Dependency[1] = tmpQuestion;
}
}, true);
});
当问题发生变化时,所选多个框的值将会更改。我有一个模型models.Dependency存储这个多选框的选定值。当两个问题发生变化时,存储在models.Dependency中的选定值也会发生变化。我的代码现在可以更改模型。问题发生变化时的依赖关系。但所选框的显示不会改变。我该怎么做才能刷新多个选中的框以反映models.Dependency中的新数据。
例如,两个问题是1-问题1,2-问题2.然后,当我单击多个选择框时,我将看到两个选项:1 - 问题1,2-问题2.当我更改问题时,选项也会改变。 如果我选择了这两个问题,则多重选择框将显示为“1-Question 1,2-Question 2”。如果我将问题1的值更改为“新问题1”。多重选择的显示保持不变。但是如果单击它,您将看到选项已经更改。未选择更改的选项。这是不正确的。我希望选中已更改的选项,此多选框的显示也会更改为“1-New Question 1,2-Question 2”。
我希望我能清楚地解释我的要求。 谢谢。
答案 0 :(得分:0)
看看:https://jsfiddle.net/u2nvj4fs/2/
一些事情:
ng-model
md-select有拼写错误(拒绝而非依赖)这&#34;或多或少&#34;做你想要的。它应该让你朝着正确的方向前进。我很乐意根据需要详细说明