与Knockout相比,在Angular中表示对象的方法

时间:2014-05-13 21:53:54

标签: javascript angularjs object knockout.js viewmodel

我有使用Knockout框架的经验。

在Angular中编写下面代码的最简洁方法是什么?

下面的代码是Knockout代码,它描述了一个包含汽车对象数组的汽车库存对象。

在Angular中可能有多种方法可以做到这一点。如果您知道某种方式并且未在此处列出,请出示。

这个问题的起源来自我的同事和我在工作中讨论Angular是否比Knockout更优雅。我告诉他我在这里陈述的同样问题,几天之后他无法回答我,这意味着它真的很难或不可能(我怀疑)。


<script type='text/javascript' src='knockout-3.1.0.js'></script>

<script>
function tire() {

    var self = this;
    //write properties and methods about tire here
}

function door() {

    var self = this;
    //write properties and methods about door here
}


function engine( car_parent ) {

    var self = this;
    //write properties and methods about engine here
}


function car() {

    var self = this;

    self.tires = [new tire(), new tire(), new tire(), new tire() ];
    self.doors = [new door(), new door(), new door(), new door() ];

    //below gives the engine child access to its car parent
    self.engine = new engine(self);

    //write other properties and methods about a car here

}


function carInventory() {
    var self = this;
    self.cars = [new car(),  new car(), new car()];

    //write properties and methods about the car inventory here
}

var vm = new carInventory();
ko.applyBindings(vm);

</script>   

1 个答案:

答案 0 :(得分:1)

我不会在你的样本中看到很多与Angular不同的内容。您可以在Angular中的控制器内连接视图模型,而不是Knockout中的ko.applyBindings(vm)

var app = angular.module('App',[])
.controller('Controller1', function($scope){
    $scope.inventory = new carInventory();
}); 

与Angular的一个主要区别在于,您不必将对象的属性设置为可观察对象和计算对象。