我开始使用angularjs而且我遇到了问题,可能是因为我误用了它。 我有一个视图绑定到一个对象数组;我想在viewModel中定义这些对象的属性和方法,使用属性的构造函数并向原型添加方法。这是javascript viewModel:
var CDLViewModel = function(name, operator, state) {
this.Name = name;
this.Operator = operator;
this.State = state;
this.LockEnabled = false; // some logic based on the state here
};
CDLViewModel.prototype = {
StartEnabled: function() {
return false; // some logic based on the state here
}
};
在这个viewModel中我有两个方法可以控制是否启用了一些按钮:一个是在构造函数中定义的,另一个是在原型中。我想只在原型中定义所有方法,但angular似乎看不到这里定义的方法。 在我的控制器中,我从服务器加载一些数据,然后填充viewModels数组;如果我调试数组,我可以在原型中用方法StartEnabled看到对象:
function myController($scope, $http, $rootScope) {
if (!$rootScope.cdls) {
$rootScope.cdls = [];
$http.get("http://localhost:8080/...")
.then(function(result) {
for (var i = 0; i < result.data.length; i++) {
$rootScope.cdls[i] = new CDLViewModel(result.data[i].Name, result.data[i].Operator, result.data[i].State);
}
},
function() {
alert("ko");
});
}
};
在视图中,我有这个标记循环遍历数组并将一些输入和按钮的状态绑定到每个viewModel;由于某种原因,绑定到LockEnabled方法的按钮正在工作,而绑定到方法StartEnabled的按钮始终被禁用。 以下是该视图的摘录:
<tabset>
<tab data-ng-repeat="cdl in cdls" heading="{{cdl.Name}}" >
Operator: <input type="text" data-ng-model="cdl.Operator"/>
<a class="btn btn-primary btn-lg btn-block" href="#/start" data-ng-disabled="cdl.StartEnabled" >Start</a>
<a class="btn btn-primary btn-lg btn-block" href="#/lock" data-ng-disabled="cdl.LockEnabled">Lock</a>
第二个按钮(链接)正在运行,第一个按钮(
)答案 0 :(得分:0)
我认为这两个地方data-ng-disabled="cdl.StartEnabled"
应为data-ng-disabled="cdl.StartEnabled()"
。