angular javascript of-model 不工作
angular javascript ng-model not working
这是我的项目的一个小节:
<div class="col-md-3 col-sm-4">
<checked-input
pholder="{{'publications-customDomain' | translate}}"
class="add-publisher-input"
ng-model="customDomain.text"
icon="glyphicon-globe"
type="publicationCustomDomain"
page="publications">
</checked-input>
</div>
<div class="col-md-3 col-sm-4">
<button ng-if="isBtnClassDisabled===false" class="add-domain btn btn-primary" ng-click="vm.addUserPublisher(currentTab)">
<span class="glyphicon glyphicon-plus"></span>{{'publications-addDomain' | translate}}
</button>
</div>
它的工作方式是,checked-input
验证输入的任何内容以确保它是 URL,并且一旦它被验证,isBtnClassDisabled
就变成假的,所以第二个 div 中的按钮出现,您可以单击它。这会调用函数 vm.addUserPublisher
,但是,当我尝试从控制器记录 this.scope.customDomain
(checked-input
的 ng-model
)时,控制台 returns undefined
。谁能解释为什么?谢谢。
编辑 1 - 我的控制器如下所示:
class mainPublicationsCtrl {
private scope: any;
private timeout: any;
private modal: any;
private route: any;
private http: any;
private mainScope: any;
private selSiteServ: any;
static $inject = ['$scope'];
constructor($scope, $timeout, $http, $modal, $route, selSiteServ) {
$scope.vm = this;
$scope.isBtnClassDisabled = true;
$scope.selectedItem = 0;
$scope.countOfTabs = 1;
$scope.customDomain = {
text: ""
}
this.scope = $scope;
...
addUserPublisher(tab: any) {
console.log(this.scope.customDomain.text);
}
...
}
编辑 2 - <checked-input>
指令定义如下:
模板:
<div>
<div class="input-info-wrap">
<div class="input-inform state-normal"></div>
</div>
<div class="input-group">
<span ng-if="icon != '' && !isFaIcon"
class="input-group-addon glyphicon {{icon}} icon-inline btn-item">
</span>
<span ng-if="icon != '' && isFaIcon"
class="input-group-addon fa {{icon}} fa-input-label-size icon-inline btn-item">
</span>
<input type="text"
class="form-control btn-item form-tab-input"
placeholder="{{pholder}}"
ng-model="model"
maxlength="20">
<span class="input-group-addon glyphicon glyphicon-asterisk input-state"></span>
</div>
</div>
Javascript:
class checkedInput implements ng.IDirective {
public link: (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes) => void;
public templateUrl = 'partials/directives/checked-input.html';
public scope = {
model: "=",
icon: "@",
pholder: "@",
type: "@",
page: "@",
num: "@",
gstab: "=",
gsrow: "=",
tab: "=",
isFaIcon: "="
};
}
尝试使用 checked-input
指令的模板。在指令模板中定义 ng-model
而不是在 HTML.
上明确定义
这是我的项目的一个小节:
<div class="col-md-3 col-sm-4">
<checked-input
pholder="{{'publications-customDomain' | translate}}"
class="add-publisher-input"
ng-model="customDomain.text"
icon="glyphicon-globe"
type="publicationCustomDomain"
page="publications">
</checked-input>
</div>
<div class="col-md-3 col-sm-4">
<button ng-if="isBtnClassDisabled===false" class="add-domain btn btn-primary" ng-click="vm.addUserPublisher(currentTab)">
<span class="glyphicon glyphicon-plus"></span>{{'publications-addDomain' | translate}}
</button>
</div>
它的工作方式是,checked-input
验证输入的任何内容以确保它是 URL,并且一旦它被验证,isBtnClassDisabled
就变成假的,所以第二个 div 中的按钮出现,您可以单击它。这会调用函数 vm.addUserPublisher
,但是,当我尝试从控制器记录 this.scope.customDomain
(checked-input
的 ng-model
)时,控制台 returns undefined
。谁能解释为什么?谢谢。
编辑 1 - 我的控制器如下所示:
class mainPublicationsCtrl {
private scope: any;
private timeout: any;
private modal: any;
private route: any;
private http: any;
private mainScope: any;
private selSiteServ: any;
static $inject = ['$scope'];
constructor($scope, $timeout, $http, $modal, $route, selSiteServ) {
$scope.vm = this;
$scope.isBtnClassDisabled = true;
$scope.selectedItem = 0;
$scope.countOfTabs = 1;
$scope.customDomain = {
text: ""
}
this.scope = $scope;
...
addUserPublisher(tab: any) {
console.log(this.scope.customDomain.text);
}
...
}
编辑 2 - <checked-input>
指令定义如下:
模板:
<div>
<div class="input-info-wrap">
<div class="input-inform state-normal"></div>
</div>
<div class="input-group">
<span ng-if="icon != '' && !isFaIcon"
class="input-group-addon glyphicon {{icon}} icon-inline btn-item">
</span>
<span ng-if="icon != '' && isFaIcon"
class="input-group-addon fa {{icon}} fa-input-label-size icon-inline btn-item">
</span>
<input type="text"
class="form-control btn-item form-tab-input"
placeholder="{{pholder}}"
ng-model="model"
maxlength="20">
<span class="input-group-addon glyphicon glyphicon-asterisk input-state"></span>
</div>
</div>
Javascript:
class checkedInput implements ng.IDirective {
public link: (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes) => void;
public templateUrl = 'partials/directives/checked-input.html';
public scope = {
model: "=",
icon: "@",
pholder: "@",
type: "@",
page: "@",
num: "@",
gstab: "=",
gsrow: "=",
tab: "=",
isFaIcon: "="
};
}
尝试使用 checked-input
指令的模板。在指令模板中定义 ng-model
而不是在 HTML.