将throwjs绑定到原型方法

时间:2014-03-13 08:42:41

标签: javascript angularjs

我开始使用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>

第二个按钮(链接)正在运行,第一个按钮(

1 个答案:

答案 0 :(得分:0)

我认为这两个地方data-ng-disabled="cdl.StartEnabled"应为data-ng-disabled="cdl.StartEnabled()"