Упрощенная версия моего кода выглядит следующим образом:.
var app = angular.module("App", ['ui.select2']);
app.controller("MainController", function ($scope) {
$scope.select2Options1 = {
data: [{id: 0, text: "Foo"}, {id: 1, text: "Bar"}]
};
$scope.select2Options2 = {
data: []
};
$scope.$watch('chosen1', function (newVal, oldVal) {
if (newVal !== undefined && newVal !== null) {
console.log("Valid value selected: " + newVal);
$scope.select2Options2.data.push({id: 0, text: "FooBar"});
}
});
});
Разметка:
<html>
<head>
<link rel="stylesheet" href="bower_components/select2/select2.css">
<script type="text/javascript" src="bower_components/jquery/jquery.js"></script>
<script type="text/javascript" src="bower_components/select2/select2.js"></script>
<script type="text/javascript" src="bower_components/angular/angular.js"></script>
<script type="text/javascript" src="bower_components/angular-ui-select2/src/select2.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="App">
<input ng-controller="MainController" ng-model="chosen1" ui-select2="select2Options1" style="width:100px">
<input ng-controller="MainController" ng-model="chosen2" ui-select2="select2Options2" style="width:100px">
</body>
</html>
То, что я хочу сделать, это обновите содержимое ui-select2
($scope.select2Options2.data
), когда что-то выбирается из другого ui-select2
($scope.select2Options1.data
).
Проблема в том, что содержимое второго ui-select2
не обновляется независимо от того, что я делаю в обработчике $scope.$watch
. Если я переместил этот $scope.select2Options2.data.push({id: 0, text: "FooBar"});
за пределы обработчика часов, он будет работать, а второй ui-select2
будет заселен. Это означает, что должно быть что-то принципиально неправильное.
Любые предложения, как исправить это?
Ну, это ничего не изменило. Я все еще не могу изменить данные. Я также заметил, что я ничего не могу изменить из $ scope. $ Watch, даже простой текст не обновляется. Обработчик выполняется, так как я вижу свои консольные журналы. – juzzlin
Я попытался установить $ scope.Hello = "Hello!" в обработчике $ scope. $ watch, но ничего не происходит (разметка
{{Hello}}