我正在开发一个也使用AngularJS的Rails项目。 首先,我有一个名为@resource的变量,它包含一个结束时间
<input style="display:none" ng-model="remainingTime" ng-init="remainingTime = <%= (resource.available_until.to_f - DateTime.now.to_f).to_i %>">
这将获得X任务的剩余时间,并显示如下(不显示无)。
获得的值我必须从控制器访问它。
在控制器中我有以下内容:
function UserEvaluationsNewCtrl ($log, $scope) {
console.log($scope.remainingTime)
}
当我想从控制器访问时,变量显示“undefined”:/
任何帮助都很有用。谢谢!!!
编辑:
REMAININGTIME = -39698
- 负数是正确的 -
编辑2: 完整的控制器:
;(function () {
'use strict';
// Define controller
function UserEvaluationsNewCtrl ($log, $scope) {
$log.debug('UserEvaluationsNewCtrl: Hi')
var vm = this
vm.data = angular.extend({}, rails_data || {})
vm.evaluationData = vm.data.resource
vm.evaluationDataStringified = ''
$scope.$watch(function(){
return vm.evaluationData
}, function(newValue, oldValue){
vm.evaluationDataStringified = angular.toJson(newValue)
$log.debug('ResourcesNewCtrl: $watch vm.evaluationDataStringified: to JSON output:', vm.evaluationDataStringified)
}, true)
console.log($scope)
}
// Inject dependencies
UserEvaluationsNewCtrl.$inject = ['$log', '$scope']
// Register controller
angular
.module('app.controllers.user_evaluations.new', [])
.controller('UserEvaluationsNewCtrl', UserEvaluationsNewCtrl)
})();
答案 0 :(得分:1)
原因:在将remainingTime
变量添加到$ scope对象之前,正在创建控制器。不要相信你的console.log
对象。
解决方案:
使用$ watch
$scope.$watch('remainingTime', function() {
alert($scope.remainingTime);
});
或使用$ timeout
$timeout(function () {
alert($scope.remainingTime);
});
答案 1 :(得分:0)
我认为发生的事情是:
div
与变量连接起来,而该变量不可用。<input>
字段分配了一个值,该字段未连接到该字段
$scope.remainingTime
变量。尝试使用下面的更改,该更改应执行以下操作:
<input ng-init=
...来设置remainingTime
的值。将<input>
字段附加到remainingTime
范围变量。
<input style="display:none" ng-init="remainingTime = <%= (resource.available_until.to_f - DateTime.now.to_f).to_i %>)" />
<div >
<input ng-model="remainingTime">
</div>
您可以(应该能够?)在真实的ng-init
字段上同时使用ng-model
和<input>
,但我确实有不确定的结果
干杯,加里。