Odoo 10与AngularJS

Bel*_*med 5 javascript openerp angularjs odoo-9 odoo-10

我正在尝试使用AngularJS创建Web扩展,但是,我执行了以下操作:

  • 我创建了小部件,然后我渲染了它.
  • 我试图将ng-app和ng-controller放在一些渲染的div上,结果是根本没有响应.

似乎odoo只支持Marionnette.js的Backbone.js.我也尝试用React.JS做同样的事,但没有任何效果.

这是我的代码.

resources.xml中

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
 <data>
    <!-- Adds all assets in Odoo -->
    <template id="assets_backend" name="static_resources_demo assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/odoo_angular/static/src/js/lib/angular.min.js"></script>
            <script type="text/javascript" src="/odoo_angular/static/src/js/controller/firstCtrl.js"></script>
            <script type="text/javascript" src="/odoo_angular/static/src/js/angular_odoo.js"></script>
        </xpath>
    </template>
 </data>
</odoo>
Run Code Online (Sandbox Code Playgroud)

angular_view.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <templates id="angular_view_odoo">
     <div t-name="angular_view_test" class="container">
       <div class="row box">
         <div ng-app="myApp" ng-controller="myCtrl">

            First Name:
            <input type="text" ng-model="firstName"/>
            <br/>
            Last Name:
            <input type="text" ng-model="lastName"/>
            <br/>
            <br/>
            Full Name: {{firstName + " " + lastName}}

        </div>
     </div>
   </div>
</templates>
Run Code Online (Sandbox Code Playgroud)

angular_odoo.js

odoo.define('odoo_angular', function (require) {
"use strict";
var ajax = require('web.ajax');
var Widget = require('web.Widget');
var core = require('web.core');
var Model = require('web.Model');

var QWeb = core.qweb;
var _t = core._t;

// here we are getting the value in an array.
   var widget_name = Widget.extend({

      init: function (parent, context) {
          var self = this;
          this.context = context;
          this._super(parent);

      },

      start: function () {
          var self = this;

          this._super();
          this.$el.empty().append(QWeb.render("angular_view_test",{}));
      },
   });

   core.action_registry.add('angular_view', widget_name);
   return widget_name;
 });
Run Code Online (Sandbox Code Playgroud)

firstCtrl.js

  var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {

    if($scope.firstName === 'Test')
        console.log('OK');
  });
Run Code Online (Sandbox Code Playgroud)

这就是结果