Javascript 带导轨的AngularJS不';我不认识$scope
我正在Rails中做一个项目,它也使用AngularJS。 首先,我有一个名为@resource的变量,它包含一个结束时间Javascript 带导轨的AngularJS不';我不认识$scope,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,我正在Rails中做一个项目,它也使用AngularJS。 首先,我有一个名为@resource的变量,它包含一个结束时间 <input style="display:none" ng-model="remainingTime" ng-init="remainingTime = <%= (resource.available_until.to_f - DateTime.now.to_f).to_i %>"> 当我想从控制器访问时,变量显示“undefined”:/ 任何
<input style="display:none" ng-model="remainingTime" ng-init="remainingTime = <%= (resource.available_until.to_f - DateTime.now.to_f).to_i %>">
当我想从控制器访问时,变量显示“undefined”:/
任何帮助都是有用的。谢谢你
编辑:
console.log($scope):
剩余时间=-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)
})();
我认为正在发生的是:
div
连接到变量,该变量不可能有
字段指定了一个值
$scope.remainingTime
变量 function UserEvaluationsNewCtrl ($log, $scope) {
console.log($scope.remainingTime)
}
字段上同时使用ng init
和ng model
,但我这样做的结果不确定
干杯,Gary。原因:控制器是在将
remainingTime
变量添加到$scope对象之前创建的。不要信任您的控制台。使用对象记录
解决方案:
使用$watch
$scope.$watch('remainingTime',function(){
警报($scope.remainingTime);
});代码>
或者使用$timeout
$timeout(函数(){
警报($scope.remainingTime);
});代码>
当您记录$scope
时,您会得到什么?您能否将控制台.log(test)
行更改为控制台.log($scope)
,并用您输入的结果更新问题get@Subash好啊编辑@Subash PD:负数是correctryconsole.log($scope.formCtrl.remainingTime)
谢谢您的回答!。我用你的澄清编辑了这个问题。问题几乎是一样的:(有什么想法吗?没错,警报显示了正确的剩余时间,但如何在函数中使用该变量?真的$scope.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>