Javascript 带AngularJS的Odoo 10
我正在尝试使用AngularJS创建web扩展,但是,我做了以下操作:Javascript 带AngularJS的Odoo 10,javascript,angularjs,openerp,odoo-9,odoo-10,Javascript,Angularjs,Openerp,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> &
- 我创建了小部件,并对其进行了渲染
- 我尝试将ng app和ng controller放在一些渲染的div上,结果是根本没有响应
<?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>
<?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>
firstCtrl.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;
});
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
if($scope.firstName === 'Test')
console.log('OK');
});
Angular js和react js与odoo不兼容。。Odoo只适用于主干js。是的,我知道这一点,但我一直在寻找的是试图使角度或反应与简单的技巧工作。嘿。只是好奇,你有没有找到一个方法让它工作?我想在我负责的自定义模块中使用VueJS。@KyleSentent我已经找到了一种方法,并使其与ReactJS:d一起工作。我所做的是使用React.createClass语法,因为你知道,浏览器不理解ES6。我想你的Vue也有办法。谢谢你的回复:)如果可能的话,你介意在github或其他地方共享你模块的代码吗?我是奥多的新手,我必须说我仍然很困惑。我可以看到您将小部件添加到action_注册表中。你介意告诉我为什么吗?它有什么作用?你从那里去了哪里?对不起,如果我听起来很坚持的话。资源和文档的缺乏让我发疯。。。