#javascript #angularjs #angularjs-scope #angular-controller
#javascript #angularjs #angularjs-scope #angular-контроллер
Вопрос:
Вот HTML с внутренним скриптом
<html>
<body ng-controller="test">
<span> {{data.name}} </span>
<input ng-model="data.name">
<hidden id="test" ng-hide="true"></hidden>
</body>
<script>
var $scope = angular.element(document.getElementById('test')).scope();
$scope.data = {
name : test;
};
<script>
</html>
Вот контроллер
app.controller('test', function($scope) {
$scope.data = {};
console.log($scope.data.name) //outputs undefined
})
Я хочу, чтобы данные внутреннего скрипта были переданы в контроллер. Он печатает неопределенный. Я определил объект в контроллере, но обновил его во внутреннем скрипте. Если предположить, что я печатаю или связываю данные из HTML, они не обновляются в объекте области контроллера. Любое решение для этого?
Комментарии:
1. Я думаю, что сначала будет запущен ваш код контроллера, а затем ваш внешний код для обновления вашей области. Итак, как определить это значение, которое вы регистрируете в данный момент?
Ответ №1:
Вы пытались извлечь его из контроллера? Или, может быть, вам понадобится более ангулярный подход. Я создал два примера: один для инициализации данных в контроллере, а другой для консоли.войдите в систему niceLittleValue
.
(function(angular) {
'use strict';
var myApp = angular.module('niceExample', []);
myApp.config(['$compileProvider', function($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
myApp.controller('test', ['$scope', function($scope) {
$scope.data = [];
$scope.data.name = 'test';
$scope.data.anotherTest = angular.element(document.querySelector('#anotherTest'));
console.log($scope.data.anotherTest[0]);
}]);
})(window.angular);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<html ng-app="niceExample">
<body ng-controller="test">
<input ng-model="data.name" ng-model-options="{debounce: 500}">
<span> {{data.name}} </span>
<hidden id="test" ng-hide="true"></hidden>
<hidden id="anotherTest" value="niceLittleValue" ng-hide="true"></hidden>
<span> {{data.anotherTest}} </span>
</body>
</html>