2017-10-26 2 views
0

ノックアウトテンプレートからAngularJSコンポーネントを起動しようとしています。 次のようなものがhtmlにあります。knockoutjsテンプレートでAngularjsコンポーネントが動作しない

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

ノックアウトスコープから角度範囲にデータを取得する必要があります。しかし、私がそうする度に、私の角成分は引き起こされません。 アイデア

+5

"ノックアウトテンプレートからAngularJSコンポーネントを起動しようとしています*"なぜですか? – adiga

+0

私の角型アプリケーションは、既存のノックアウトアプリケーションの上に構築されています。私たちは時間の制約のために一緒に働くように設定しました –

+1

@VarunG私は言わなければならない、それは時間効率が良いようには聞こえません。 –

答えて

1

この最初のオフこれは本当に悪い考えのようです。それが既存のノックアウトアプリケーションの場合、なぜあなたは角度を追加しようとしていますか?ノックアウトにもコンポーネントがあるので、ノックアウトコンポーネントを使うことができます。そうでなければ、私はanglejsとknockoutjsがお互いに打ち砕かれることを確信しています。

とにかく。目に見えるバインディングでは動作するように見えましたが、ifバインディングでは動作しませんでした。ここ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> 

と角度成分。

(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; 
    } 
})(); 
+0

私はあなたが何を言おうとしているかを完全に理解しています。しかし、私はこれについて何も言わない。この回答に関しては、ノックアウトで開発された特定の機能がprobです。その後、新しい親機能が開発される予定です。このアプリはAngularJSアプリです。その中にノックアウトがあり、既存のコンポーネントを再利用したいだけです –

関連する問題