Angularjs TypeError:无法读取属性'$原始的';未定义的
我得到错误Angularjs TypeError:无法读取属性'$原始的';未定义的,angularjs,Angularjs,我得到错误TypeError:无法读取以下代码中未定义的属性“$setPristine”,我尝试执行inputCtrl.inputForm.$setPristine() inputForm.js (function(){ var inputForm = angular.module('input-form', [ ]); inputForm.directive('inputForm', function(){ return { restr
TypeError:无法读取以下代码中未定义的属性“$setPristine”
,我尝试执行inputCtrl.inputForm.$setPristine()代码>
inputForm.js
(function(){
var inputForm = angular.module('input-form', [ ]);
inputForm.directive('inputForm', function(){
return {
restrict: 'E',
templateUrl: 'input-form.html',
scope: {data: "="},
controllerAs: 'inputCtrl',
bindToController: true,
controller: ['$log', '$scope', function($log, $scope){
var inputCtrl = this;
inputCtrl.inputValues = millennialsDefault;
inputCtrl.emitData = function() {
inputCtrl.data = inputCtrl.inputValues.topic1Data;
$log.debug("Emitting '" +
inputCtrl.inputValues.topic1Name + "' to '" +
inputCtrl.inputValues.topic2Name + "'");
};
inputCtrl.swapInput = function(){
var swappedInputValues = {
topic1Name: inputCtrl.inputValues.topic2Name,
topic1Total: inputCtrl.inputValues.topic2Total,
topic1Data: inputCtrl.inputValues.topic2Data,
topic2Name: inputCtrl.inputValues.topic1Name,
topic2Total: inputCtrl.inputValues.topic1Total,
topic2Data: inputCtrl.inputValues.topic1Data,
};
inputCtrl.inputValues = swappedInputValues;
};
inputCtrl.clearInput = function(){
inputCtrl.inputValues =
{
topic1Name: "",
topic1Total: undefined,
topic1Data: "",
topic2Name: "",
topic2Total: undefined,
topic2Data: "",
};
inputCtrl.inputForm.$setPristine(); // TypeError: Cannot read property '$setPristine' of undefined
我做错了什么?显然,解决方案是更改inputCtrl.inputForm.$setPristine()
到$scope.inputForm.$setPristine()代码>
以下是一些参考资料:
如果您喜欢使用this
并避免引用$scope
,那么这可能是一个解决方案:检查是否有任何打开的函数调用,这些调用在表单创建之前呈现页面,最终可能会导致“$setPristine is undefined”
例如,在控制器中
$scope.reset= function(form){
form.$setPristine();
};
$scope.reset();
如果有这样的错误,你可以看到,
在加载自身时,它将与$setPristine()接合 虽然这确实可能发生,但我认为这并不适用于本问题中的情况。此外,这一问题在一年多前被张贴出来,然后由海报自己回答,因此他们不太可能仍在寻找可行的答案。