javascript - Angularjs 组件在 knockoutjs 模板中不起作用

标签 javascript angularjs knockout.js components

我正在尝试从 knockout 模板启动 AngularJS 组件。 类似于下面的 html 内容。

<!-- ko if:something -->
    <my-angular-component attr1= "text1">
      <span data-bind="text: text1"></span> & <span data-bind="text: text2"></span>
    </my-angular-component>
<!--/ko -->

我需要将数据从 knockout 范围获取到 Angular 范围。但每当我这样做时,我的 Angular 分量都不会被触发。 有什么想法吗?

最佳答案

首先,这似乎是一个非常糟糕的主意。如果它是现有的 knockout 应用程序,为什么要尝试添加 Angular ? knockout 也有组件,因此您可以只使用 knockout 组件。否则我确信 AngularJS 和 KnockoutJS 会互相冲突。

无论如何。它似乎适用于可见绑定(bind),但不适用于 if 绑定(bind)。这是 plunkr。 https://plnkr.co/edit/AvWH2JEF2DEUIWkYBQNy?p=preview

<!DOCTYPE html>
<html lang="en" ng-app="myApp" class="no-js">
<head>
    <title>My AngularJS App</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
    <p>show component: <input type="checkbox" data-bind="checked: something" /></p>
    <div ng-app="myApp"> 
   <div data-bind="visible: something">
        <hello-world name="world"> </hello-world>
  </div>

    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://code.angularjs.org/1.5.5/angular.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
    <script src="script.js"></script>
    <script>
    function viewModel() {
    var self = this;
     this.something = ko.observable(true);
   }
      var vm = new viewModel();

(function($) {
  ko.applyBindings(vm); //bind the knockout model
})(jQuery);
</script>

</body>
</html>

和 Angular 分量。

(function(){
angular.module("myApp", [])
  .component("helloWorld",{
      template: "Hello {{vm.name}}!",
      bindings: { name: '@' },
      controller: ('helloWorldController',helloWorldController),
      controllerAs: 'vm'
  })
  function helloWorldController(){
     /* jshint validthis: true */
        var vm = this;
  }
})();

关于javascript - Angularjs 组件在 knockoutjs 模板中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946819/

相关文章:

javascript - 如何重现这种翻转效果

javascript - WebSync 服务器按需配置问题

javascript - Visual Studio 2015 扩展将 JavaScript 文件中的字符串 HTML 处理为 HTML 编辑

javascript - 如何在angularjs中的提交功能上获取ng-repeat复选框值

javascript - 如何在 AngularJs 的无限滚动中实现后退按钮?

javascript - Knockout.js:如果绑定(bind)具有给定值,则设置默认文本

jquery-mobile - JQM/knockoutJS 组件弹窗不绑定(bind)数据?

javascript - 在 Angular 中重新加载图像

javascript - Twitter Bootstrap : How to close modal dialog?

css - 导入 Yeoman/Angularjs 应用程序