【问题标题】:Ways of representing objects in Angular in comparison to Knockout [closed]与 Knockout 相比,在 Angular 中表示对象的方式
【发布时间】:2014-07-01 18:37:48
【问题描述】:

我有使用 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>   

【问题讨论】:

    标签: javascript angularjs object knockout.js viewmodel


    【解决方案1】:

    我在您的示例中没有看到太多与 Angular 不同的地方。代替 Knockout 中的 ko.applyBindings(vm),您可以在 Angular 的控制器中连接您的视图模型:

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

    与 Angular 的一个主要区别是您不必将对象上的属性转换为可观察对象和计算对象。

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2017-09-07
      • 2018-11-02
      • 2013-12-22
      • 2023-04-10
      • 2020-06-04
      • 2016-01-31
      • 2015-12-25
      • 2015-05-28
      相关资源
      最近更新 更多