我遇到了Kendo UI控件的问题
我的HTML
<input type="text" ng-model="record.name" kendo-numeric-text-box />
<input type="text" ng-model="record.name"> </input>
<button ng-click="resetRecord()" >test bind</button>
我的test.js
$scope.record ={};
$scope.resetRecord= function(){
$scope.record = {};
}
好吧,当我执行函数resetRecord
只是标准输入清除时,kendo ui输入不清楚,我已经尝试了$scope.record =null
它也不起作用。
如果我更改为下面的代码,它可以工作,但我需要它像上面那样工作
$scope.resetRecord= function(){
$scope.record. name = null;
}
所有输入Kendo UI都会发生这种情况,而不仅仅是kendo-numeric-text-box
如果有办法与record
对象进行迭代,发现所有&#34;属性&#34;,例如名称,它将对我有效。
我的意图是只有一个控制器用于系统的所有CRUD屏幕,我不想为系统的每个实体编写一个带有模型定义的控制器。 这是一个错误吗?
更新 - 已解决
解决方案1 正如runTarm在解决方案2中所说。
for (prop in $scope.model.record) {
$scope.model.record[prop]='';
}
解决方案2
只需将属性k-rebind
添加到Kendo UI控件,它就会根据ng-model
更新内容。
input type="text" ng-model="record.name" k-rebind="record.name" kendo-numeric-text-box />
答案 0 :(得分:1)
这不是错误,而是由于JavaScript对象的 Prototypal Inheritance 特性导致的常见问题。我建议您阅读Understanding-Scopes了解更多详情。
您可以将record
存储在另一个对象中,而不是直接存储在$scope
中,从而避免此问题。例如:
$scope.model = {};
$scope.model.record = {};
$scope.resetRecord = function() {
$scope.model.record = {};
}
同时更改ng-model
:
<input type="text" ng-model="model.record.name" kendo-numeric-text-box />
<input type="text" ng-model="model.record.name"> </input>
<button ng-click="resetRecord()" >test bind</button>
或者如果您不想添加额外的model.
,您提到的替代解决方案就是您所提到的。
您可以迭代对象的属性并将其全部删除:
for (prop in $scope.record) {
delete $scope.record[prop];
}
希望这有帮助。